#php #laravel #laravel-5 #eloquent
#php #laravel #laravel-5 #eloquent
Вопрос:
Когда я пытаюсь получить название категории из моего продукта, я обнаружил, что мне пришлось использовать ‘C’, а не ‘c’, прежде чем он получил результаты. Однако, когда я пытаюсь получить имя поставщика, строчная буква s работает просто отлично. Мне было интересно, что вызывает эту разницу. Также, если я dd($ var), ожидается, что поле relations будет пустым. Я предположил, что это будет иметь что-то связанное с взаимосвязями, определенными в моих моделях.
Blade.php
<td>{{$product->Category->name}}</td>
<td>{{$product->salePrice}}</td>
<td>{{$product->stock}}</td>
<td>{{$product->supplier->company_name}}</td>
Product.php
public function category()
{
return $this->belongsTo('AppCategory','category');
}
public function supplier()
{
return $this->belongsTo('AppSupplier','supplier_id');
}
Category.php
public function product()
{
return $this->hasMany('AppProduct');
}
Supplier.php
public function product()
{
return $this->hasMany('AppProduct');
}
Ответ №1:
Вам не хватает _id
в вашей модели продукта:
public function category()
{
return $this->belongsTo('AppCategory','category_id');
}
Или оставить пустым
public function category()
{
return $this->belongsTo('AppCategory');
}
В вашем контроллере
public function index()
{
$products = Product::all()->with('category');
return view('your_view', compact('products'));
}
Если вы dd
используете продукты
В вашем представлении вы увидите, что связь была загружена из-за
При доступе к отношениям Eloquent в качестве свойств данные отношений «загружаются лениво». Это означает, что данные взаимосвязи фактически не загружаются до тех пор, пока вы не получите первый доступ к свойству. Однако Eloquent может «нетерпеливо загружать» отношения во время запроса родительской модели.
@foreach($products as $product)
<td>{{$product->category->name}}</td>
<td>{{$product->salePrice}}</td>
<td>{{$product->stock}}</td>
<td>{{$product->supplier->company_name}}</td>
@endforeach
Комментарии:
1. спасибо за ваш ответ, но имя столбца, на который ссылаются, — category, а не category_id, поэтому я не думаю, что проблема в этом