Как правильно передать в представление данные из двух таблиц (yii, active record)?

Интересует правильный подход к решению следующей задачи. Допустим у меня есть две таблицы. В одной список клиентов, в другой список заказов клиентов. Связь один ко многим (один клиент - много заказов).

Допустим есть представление (view, вьюшка), в котором нужно вывести данные о клиенте и список его заказов.
Я делаю обычно это примерно так:

$client = Client::model()->findByPk($id);
$orders = Order::model()->findAll('client_id = :client_id', array(':client_id' => $id);
$data['client'] = $client;
$data['orders'] = $orders;
$this->render('view_name', $data);


После в самом представление не составит труда вывести все данные.

Меня интересует, может быть мое решение корявое и есть более элегантное? Предполагаю, что можно настроить связь в моделях и получать данные еще проще. А так же беспокоит, насколько коряво я отдаю данные в представление?
  • Вопрос задан
  • 4409 просмотров
Решения вопроса 1
aavvbb
@aavvbb
В модели клиентов
public function relations()
	{
	     'orders'=>array(self::BELONGS_TO,'Order','client_id'),            
	}

Использование
$client = Client::model()->findByPk($id);
$this->render('view_name', array('client'=>$client, 'orders'=>$client->orders));

что то в таком стиле?
Ответ написан
Пригласить эксперта
Ответы на вопрос 1
@Wily
$client = Client::model()->findByPk($id);
$orders = Order::model()->findAll('client_id = :client_id', array(':client_id' => $id);
$this->render('view_name', array('client'=>$client, 'orders'=>$orders));
Ответ написан
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы