A
A
AR2017-01-31 19:10:23
Yii
AR, 2017-01-31 19:10:23

Yii2 How to make it so as not to write queries to the database from the view in a specific example?

Здравствуйте.
Просьба помочь, не могу понять как сделать так, чтобы не писать запросы к бд из вида (понимая что так не делается).
Есть три таблицы:
1. Таблица с услугами – service (поля – id, название, описание и тд)
2. Таблица с работами портфолио – portfolio (поля – id, название, описание и тд)
3. Таблица для привязывания конкретной работы из портфолио к услуге – service_portfolios(поля id, id_service, id_portfolio)
Мне нужно вывести на определенной странице все работы которые привязаны к какой-то конкретной услуге. Не используя виды, во время отладки, выводя данные прямо из контроллера все сделал, работает, вот таким кодом:

public function actionTest($service)
    {

        $service_portfolios = ServicePortfolio::find()->where(['id_service' => $service])->all();

        foreach ($service_portfolios as $sp) {
            $work = Portfolio::find()->where(['id' => $sp->id_portfolio])->one();
            debug($work->title);
        }

    }

Но как сделать так передав все в вид, чтобы не делать из него запрос к бд понять не могу(

Answer the question

In order to leave comments, you need to log in

1 answer(s)
S
Snewer, 2017-01-31
@Snewer

In the ServicePortfolio model, declare a relationship:

public function getPortfolio(){
  return $this->hasOne(Portfolio::className(), ['id' => 'id_serice']);
}

and where you need to get these records, use:
$sp->portfolio

Didn't find what you were looking for?

Ask your question

Ask a Question

731 491 924 answers to any question