Что переместить в модель Kohana? Здравствуйте! Взялся активно изучать PHP и Kohana. Решим написать небольшую CMS для интернет-магазина. Заработался и оказалось что все модели и меня почему-то пустые.. Максимум что они содержат, это:bind('products', $products);
// получаем данные из таблицы "products" $products = ORM::factory('product')->find_all();
if(isset($_POST['InCart'])) { $this->session->set('product2', $product->name); } } } // Products Вроде бы как (насколько я понимаю) половина этого контроллера, должны быть в моделе (подключение к БД, например). Прошу помощи: как правильно распределить код между контроллером и моделью? Спасибо.
Для правильного распределения кода между контроллером и моделью вам следует переместить всю логику работы с базой данных (запросы, изменения и сохранения данных) из контроллера в модель. Модель должна отвечать за работу с конкретной сущностью (например, товаром, заказом и т.д.) и иметь методы для выполнения различных операций над этой сущностью.
В вашем случае, вам нужно создать методы в модели Model_Product для выполнения запросов к таблице "products". Например, вы можете создать методы для получения всех товаров, для получения конкретного товара по id и для сохранения нового заказа.
Примерно так может выглядеть модель Model_Product с добавленными методами:
<?php defined('SYSPATH') or die('No direct script access.'); class Model_Product extends ORM { public function get_all_products(){ return $this->find_all(); } public function get_product_by_id($id){ return $this->where('id', '=', $id)->find(); } public function save_order($data){ $order = ORM::factory('Order'); $order->values($data)->save(); } }
Измените ваш контроллер Controller_Products следующим образом, чтобы использовать методы модели:
public function action_index() { $content = View::factory('prodAll') ->bind('products', $products); // получаем данные из таблицы "products" через модель $products = ORM::factory('product')->get_all_products(); // остальной код оставляем без изменений } public function action_product() { //узнаем id материала $id = (int) Request::initial()->param('id'); // получаем данные из таблицы "products" через модель $product = ORM::factory('product')->get_product_by_id($id); // остальной код оставляем без изменений }
Таким образом, вы разделяете логику работы с данными на более удобные компоненты (модели), что делает код более структурированным и облегчает его поддержку и дальнейшее развитие.
Для правильного распределения кода между контроллером и моделью вам следует переместить всю логику работы с базой данных (запросы, изменения и сохранения данных) из контроллера в модель. Модель должна отвечать за работу с конкретной сущностью (например, товаром, заказом и т.д.) и иметь методы для выполнения различных операций над этой сущностью.
В вашем случае, вам нужно создать методы в модели Model_Product для выполнения запросов к таблице "products". Например, вы можете создать методы для получения всех товаров, для получения конкретного товара по id и для сохранения нового заказа.
Примерно так может выглядеть модель Model_Product с добавленными методами:
<?php defined('SYSPATH') or die('No direct script access.');class Model_Product extends ORM {
public function get_all_products(){
return $this->find_all();
}
public function get_product_by_id($id){
return $this->where('id', '=', $id)->find();
}
public function save_order($data){
$order = ORM::factory('Order');
$order->values($data)->save();
}
}
Измените ваш контроллер Controller_Products следующим образом, чтобы использовать методы модели:
public function action_index() {$content = View::factory('prodAll')
->bind('products', $products);
// получаем данные из таблицы "products" через модель
$products = ORM::factory('product')->get_all_products();
// остальной код оставляем без изменений
}
public function action_product() {
//узнаем id материала
$id = (int) Request::initial()->param('id');
// получаем данные из таблицы "products" через модель
$product = ORM::factory('product')->get_product_by_id($id);
// остальной код оставляем без изменений
}
Таким образом, вы разделяете логику работы с данными на более удобные компоненты (модели), что делает код более структурированным и облегчает его поддержку и дальнейшее развитие.