И снова здравствуйте!
Подскажите (я бы даже сказал - НАУЧИТЕ!) решение такой задачи:
Есть таблице Order и есть таблице Portfolio
связь стандартная:
public function getPortfolio()
{
return $this->hasOne(Portfolio::class, ['id' => 'portfolio_id']);
}
В GridView хочу выводить в фильтре именно те Portfolio, id которых присутствуют в колонке portfolio_id таблицы Order
На данный момент написал такой костыль в order/index.php
[
'attribute' => 'portfolio_id',
'headerOptions' => ['class' => 'col-md-1'],
//'headerOptions' => ['width' => '50'],
'format' => 'text',
'filter' => Html::activeDropDownList($searchModel, 'portfolio_id', Portfolio::getNames(), // возвращаем ВСЕ портфели
['class' => 'form-control', 'prompt' => 'Все']),
'value' => 'portfolio.title'
],
в таблице Order - есть ордера на 2 портфеля из 5.. в dropdown - я вижу все 5 Портфелей..
Вот хочу понять сам принцип работы со связями.. доку читал - вроде все понятно.. но что именно делать - нет...
Я понимаю, что нужно создать метод в модели Order, который будет дергать все значения колонки portfolio_id и отдавать мне их в виде массива (id - portfolio.title)... Правильно?
Можно конкретный пример по данному случаю?
Просто в остальных моих таблицах - примерно такие же связи и задача будет повторяться (разными будут только названия связанных таблиц)..
Прошу строго не судить и не ржать =).. в 40 лет не так-то просто учить php и yii