@frmax
человек

Как правильно сделать select с помощью hasMany()?

Добрый день,

Организовал в базе данных связь и в модели сгенерировал hasMany()
class Day extends \yii\db\ActiveRecord
{
public function getXxx()
    {
        return $this->hasMany(\app\models\xxx::className(), ['days_id' => 'id']);
    }


Как мне в контроллере получить связный массив?
\app\models\Day::getXxx();
Calling unknown method: app\modules\caregiver\controllers\MyController::hasMany()
  • Вопрос задан
  • 200 просмотров
Пригласить эксперта
Ответы на вопрос 2
1) Связи объявляются на двух концах пример:
class Customer extends ActiveRecord
{
    public function getOrders()
    {
        return $this->hasMany(Order::className(), ['customer_id' => 'id']);
    }
}

class Order extends ActiveRecord
{
    public function getCustomer()
    {
        return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
    }
}


2) Получение связных данных
// SELECT * FROM `customer` WHERE `id` = 123
$customer = Customer::findOne(123);

// SELECT * FROM `order` WHERE `customer_id` = 123
// $orders - это массив объектов Order
$orders = $customer->orders;


3) Принцип получения массива объектов. Второй вариант для продолжения запроса типа ->where(Бла бла)
$customer->orders; // массив объектов `Order`
  $customer->getOrders(); // объект ActiveQuery
Ответ написан
fornit1917
@fornit1917
$day = Day::findOne($dayId); //получаем day
$xxx = $day->getXxx()->all(); //получаем связанные данные
Ответ написан
Ваш ответ на вопрос

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

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