Я пытаюсь перечислить все продукты и их имя клиента (две разные таблицы), используя Eloquent eager loading.Использование Eloquent eager loading в Laravel 5
- Клиент может иметь много продуктов
- продукт принадлежит одному клиенту
я борюсь с моим контроллером и моделями для достижения этой цели. dd($products);
возвращение "clients" => null
.
Не уверен, что я не хватает
Контроллер:
$products = Product::with('clients')->get();
return view('products.index')->with(['products' => $products]);
View (входит в линию, вызывая ошибку):
@foreach($products as $product)
<tr>
<td>{{ $product->name }}</td>
<td>{{ $product->clients->name }}</td> <--- THIS GIVES ME THE ERROR: Trying to get property of non-object
</tr>
@endforeach
Модель продукта:
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Product extends Model {
public function users()
{
return $this->belongsTo('App\User');
}
public function clients()
{
return $this->belongsTo('App\Client');
}
Модель клиента :
<?php namespace App;
use Illuminate\Database\Eloquent\Model;
class Client extends Model {
public function products()
{
return $this->hasMany('App\Product');
}
Query Builder работает отлично:
$products = DB::table('products')
->join('clients', 'products.client_id', '=', 'clients.id')
->select('products.*', 'clients.*')
->get();
Если один продукт не имеет клиент, вы получите указанную ошибку. – user2094178
Хорошо, но все строки продуктов содержат допустимый идентификатор клиента (столбец client_id), и все эти идентификаторы клиента (столбец id) существуют в моей таблице клиентов. – user3489502
Вы создали отношения между клиентами и таблицей продуктов? – mdamia