Laravel Принадлежит к попытке получить собственность Non объекта - PullRequest
0 голосов
/ 19 февраля 2019

Поэтому я пытаюсь использовать BelongsTo для отображения сведений о клиенте, вот мой текущий код:

мой контроллер:

$assignees = assignee::latest()
                                ->whereNull('timeout')
                                ->paginate(10);

         return view('assignees.index',compact('assignees'))
             ->with('i', (request()->input('page', 1) - 1) * 5);

Назначить таблицу:

$table->string('original_filename')->nullable();
$table->string('custidno')->nullable();
$table->foreign('custidno')->references('custid')->on('customers');
$table->string('cardno')->nullable();

Таблица клиентов:

Schema::create('customers', function (Blueprint $table) {
            $table->increments('id');
            $table->string('custid')->index()->unique();

Назначить модель:

public function cust()
{
    return $this->belongsTo('App\Customer','custid');
}

на мой взгляд: у меня есть следующий цикл for, который отображает «Таблица назначенных лиц», я хочу заменить поле custidnoс именем клиента, взятым из таблицы клиентов.

index.blade.php:

<tr>
    <td>{{ $assignee->id }}</td>
    <td>{{ $assignee->datacenter }}</td>
    <td>{{ $assignee->cust->name}}</td>
    <td>{{ $assignee->refnumber }}</td>

Я получаю следующую ошибку:

Попытка получитьсвойство необъекта

Ответы [ 2 ]

0 голосов
/ 19 февраля 2019

В вашей Assign модели:

public function cust()
{
    return $this->belongsTo('App\Customer','custid');
}

Вы используете custid, который находится внутри customers таблицы.Вам необходимо указать custidno, который является внешним ключом, ссылающимся на custid в таблице customers.

Обновите его до:

public function cust()
{
    return $this->belongsTo('App\Customer','custidno', 'custid');
}

Это должно дать вам правильные записи, если они существуют.Затем вы можете проверить дополнительную логику, если данные не равны NULL, а затем получить доступ к их свойству.

0 голосов
/ 19 февраля 2019

Существует большая вероятность того, что ваш запрос возвращает ноль (нет записей).Теперь, когда вы пытаетесь получить доступ к его содержимому (которое является ничем), вы получаете сообщение об ошибке: Попытка получить свойство необъекта

Лучше распечатать вывод, полученный из вашей модели.запрос, а затем в своем коде, проверьте, есть ли какие-либо записи, прежде чем обрабатывать их.как показано ниже:

if( count($assignee->cust) ){ // case there are some records against this assignee
    {{ $assignee->cust->name}}
}

еще лучший подход к отладке, чтобы сделать следующее, чтобы сначала увидеть вывод в контроллере.

echo '<pre>'; // to proper display your output
print_r($assignee); // your object with everything in it
exit; // exit application to see your variable output

просто эти строки помогут вам по возможности отладить вашу проблему.

Надеюсь, это поможет :) Удачи

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...