Вывод из связанной таблицы

Общие вопросы по использованию второй версии фреймворка. Если не знаете как что-то сделать и это про Yii 2, вам сюда.
Ответить
mashinis
Сообщения: 24
Зарегистрирован: 2016.03.19, 15:17

Вывод из связанной таблицы

Сообщение mashinis »

Есть две таблицы: сustomer, orders
Связь один ко многим.
Не могу добиться вывода из связанной таблицы orders.
Ошибка:
PHP Notice – yii\base\ErrorException
Trying to get property of non-object

Модель Customer.php

Код: Выделить всё

<?php

namespace app\models;

use yii\db\ActiveRecord;

class Customer extends ActiveRecord
{
    const STATUS_INACTIVE = 0;
    const STATUS_ACTIVE = 1;
    
    /**
     * @return string название таблицы, сопоставленной с этим ActiveRecord-классом.
     */
    public static function tableName()
    {
        return 'customer';
    }
        
    public function getOrders()
    {
        return $this->hasMany(Orders::className(), ['customer_id' => 'id']);
    }   
}

class Orders extends ActiveRecord
{
    public function getCustomer()
    {
        return $this->hasOne(Customer::className(), ['id' => 'customer_id']);
    }
} 
Контроллер CustomerController.php

Код: Выделить всё

<?php

namespace app\controllers;

use yii\web\Controller;
use yii\data\Pagination;
use app\models\Customer;

class CustomerController extends Controller
{    
    public function actionIndex3()
    {
        // SELECT * FROM `customer` WHERE `id` = 1
        $customer = Customer::findOne(1);

        // SELECT * FROM `order` WHERE `customer_id` = 1
        // $orders - это массив объектов Order
        $orders = $customer->orders;
            
        return $this->render('index3', [
            'customer' => $customer,
            'orders' => $orders,
        ]);
    }
} 

view/customer/index3.php

Код: Выделить всё

<?php
use yii\helpers\Html;
use yii\widgets\LinkPager;
?>
<h1>Countries</h1>
<ul>
    <li>
        <?= Html::encode("{$orders->orders}") ?>:

    </li>
</ul>
Ребята, понимаю, тема избита, начал только изучать Yii2. Помогите пожалуйста. Что я делаю не так?
Аватара пользователя
SiZE
Сообщения: 2817
Зарегистрирован: 2011.09.21, 12:39
Откуда: Perm
Контактная информация:

Re: Вывод из связанной таблицы

Сообщение SiZE »

1. Попробуй осознать эту ошибку, поверь, в будущем тебе очень сильно пригодится.
Trying to get property of non-object
2. Посмотри в доке, что возвращается в случае если связь не найдена.
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Вывод из связанной таблицы

Сообщение mat.twg »

mashinis писал(а):<?= Html::encode("{$orders->orders}") ?>
Ну раз $orders - это массив объектов Order

Код: Выделить всё

<?= Html::encode("{$orders[0]->orders}") ?>
mashinis
Сообщения: 24
Зарегистрирован: 2016.03.19, 15:17

Re: Вывод из связанной таблицы

Сообщение mashinis »

Пример делал по докам. А вот вывода массива во view, я в документации не нашел. :-(
Спасибо большое за ответы!
Аватара пользователя
mat.twg
Сообщения: 222
Зарегистрирован: 2012.02.22, 20:44
Откуда: Санкт-Петербург

Re: Вывод из связанной таблицы

Сообщение mat.twg »

Так что в итоге?
mashinis
Сообщения: 24
Зарегистрирован: 2016.03.19, 15:17

Re: Вывод из связанной таблицы

Сообщение mashinis »

На работу позвали. Только завтра смогу проверить.
mashinis
Сообщения: 24
Зарегистрирован: 2016.03.19, 15:17

Re: Вывод из связанной таблицы

Сообщение mashinis »

Товарищи! Большое спасибо за помощь!
Причина была в том, что не правильно создавал связи в phpMyAdmin
Ответить