Перейти до вмісту
Пошук в
  • Детальніше...
Шукати результати, які ...
Шукати результати в ...

Массив в модели $query->rows as $result


Recommended Posts

Всем добрый вечер, объясните пожалуйста зачем в модели используют массив  foreach ($query->rows as $result) { , если можно вывести return $query->row и работать с массивом в контроллере ?

В чем разница и где тайные знаки?)

Очень благодарен за ответы 

Надіслати
Поділитися на інших сайтах

Нет разницы, но мне было бы удобней если бы это всё именно в модели и происходило, а в контроллере получать готовый результат и передавать в шаблон

Надіслати
Поділитися на інших сайтах


а как по феншую ?) все же если есть два варианта реализации, значит один из них костыль )

Надіслати
Поділитися на інших сайтах

разный у всех фэншуй))  ну в том варианте что есть сейчас получается что в модели цикл и потом ещё в котроллере, по мне, лучше один в модели

Надіслати
Поділитися на інших сайтах


4 минуты назад, zomo сказал:

а как по феншую ?) все же если есть два варианта реализации, значит один из них костыль )

 

Вот то что вы предлагаете и есть костыль )

Надіслати
Поділитися на інших сайтах

4 минуты назад, Vetroff сказал:

 

Вот то что вы предлагаете и есть костыль )

Я ничего не предлагаю opencart использует по умолчанию оба метода....

 

например тот же язык в каталоге модели foreach ($query->rows as $result) {

А потом в контроллере 

    $results = $this->model_localisation_language->getLanguages();

        foreach ($results as $result) {

 

....

 

Вот и не понимаю зачем и так и так делать

Надіслати
Поділитися на інших сайтах

По хорошему делать нужно согласно архитектуры MVC с тонкими контроллерами и обрабатывать данные в модели, но в опенкарте так сложилось что все делается 2а раза, иногда это намеренно, иного нет   

Змінено користувачем ArtemPitov
Надіслати
Поділитися на інших сайтах

16 минут назад, Vetroff сказал:

Вот то что вы предлагаете и есть костыль )

Не совсем..

под рукой оказалосьь

 

			return array(
				'product_id'       => $query->row['product_id'],
				'name'             => $query->row['name'],
				'description'      => $query->row['description'],
				'meta_title'       => $query->row['meta_title'],
				'meta_description' => $query->row['meta_description'],
				'meta_keyword'     => $query->row['meta_keyword'],
				'tag'              => $query->row['tag'],
				'model'            => $query->row['model'],
				'sku'              => $query->row['sku'],
				'upc'              => $query->row['upc'],
				'ean'              => $query->row['ean'],
				'jan'              => $query->row['jan'],
				'isbn'             => $query->row['isbn'],
				'mpn'              => $query->row['mpn'],
				'location'         => $query->row['location'],
				'quantity'         => $query->row['quantity'],
				'stock_status'     => $query->row['stock_status'],
				'image'            => $query->row['image'],
				'manufacturer_id'  => $query->row['manufacturer_id'],
				'manufacturer'     => $query->row['manufacturer'],
				'price'            => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),
				'special'          => $query->row['special'],
				'reward'           => $query->row['reward'],
				'points'           => $query->row['points'],
				'tax_class_id'     => $query->row['tax_class_id'],
				'date_available'   => $query->row['date_available'],
				'weight'           => $query->row['weight'],
				'weight_class_id'  => $query->row['weight_class_id'],
				'length'           => $query->row['length'],
				'width'            => $query->row['width'],
				'height'           => $query->row['height'],
				'length_class_id'  => $query->row['length_class_id'],
				'subtract'         => $query->row['subtract'],
				'rating'           => round($query->row['rating']),
				'reviews'          => $query->row['reviews'] ? $query->row['reviews'] : 0,
				'minimum'          => $query->row['minimum'],
				'sort_order'       => $query->row['sort_order'],
				'status'           => $query->row['status'],
				'date_added'       => $query->row['date_added'],
				'date_modified'    => $query->row['date_modified'],
				'viewed'           => $query->row['viewed']

Может не совсем удачный

'price'            => ($query->row['discount'] ? $query->row['discount'] : $query->row['price']),

А где ж сам dicount

Как по мне модель должна отдавать "сырые" данные

 

Надіслати
Поділитися на інших сайтах

или вот

 

'description'      => $query->row['description'],

 

А чего сразу не привести в нужный формат? Кому нужен сырой?

Т.е. в одном месте а не по всем ..

 

Надіслати
Поділитися на інших сайтах

Думаю, что оба метода имеют место быть. В некоторых местах можно обработать "сырой" массив в контроллере.  НО с целью оптимизации запросов, модель может и не отдавать все данные, если написан свой запрос который отдает только заранее определенные поля, тогда можно подготовить массив в модели, если значения массивов не нужно потом обрабатывать к контроллере.
В целом кто как хочет так и др....т. Главное в контроллере не писать запросы в БД, а в темплейте не писать логику. 

Надіслати
Поділитися на інших сайтах

1 минуту назад, Waha сказал:

Главное в контроллере не писать запросы в БД,

Это верно, но спорно
в ОС controller == model
различия есть,

в 1.5 controller == model == template

 

4 минуты назад, Waha сказал:

а в темплейте не писать логику. 


Почему?

вью - это логика от переданных в нее условий

И.. ну так твиг потому и пришел чтобы не сильно  лезли..


 

Надіслати
Поділитися на інших сайтах

3 часа назад, chukcha сказал:

Это верно, но спорно
в ОС controller == model
различия есть,

в 1.5 controller == model == template

 


Почему?

вью - это логика от переданных в нее условий

И.. ну так твиг потому и пришел чтобы не сильно  лезли..


 

 

Если во вью будет логика и переопределение массивов или еще что-то что должно быть в контроллере, то руки вырвать таким кодерам нужно.
Twig пришел и хвала ему, поменьше будет шаблоно и модейле пейсателей которые суют в верстку ересь

Надіслати
Поділитися на інших сайтах

9 часов назад, zomo сказал:

все же если есть два варианта реализации, значит один из них костыль )

нет
два разных кодера мыслят по разному

и это нормально

Надіслати
Поділитися на інших сайтах

Створіть аккаунт або увійдіть для коментування

Ви повинні бути користувачем, щоб залишити коментар

Створити обліковий запис

Зареєструйтеся для отримання облікового запису. Це просто!

Зареєструвати аккаунт

Вхід

Уже зареєстровані? Увійдіть тут.

Вхід зараз
  • Зараз на сторінці   0 користувачів

    • Ні користувачів, які переглядиють цю сторінку

×
×
  • Створити...

Important Information

На нашому сайті використовуються файли cookie і відбувається обробка деяких персональних даних користувачів, щоб поліпшити користувальницький інтерфейс. Щоб дізнатися для чого і які персональні дані ми обробляємо перейдіть за посиланням . Якщо Ви натиснете «Я даю згоду», це означає, що Ви розумієте і приймаєте всі умови, зазначені в цьому Повідомленні про конфіденційність.