Link 两表合一 Laravel 5.5

Link two tables in one in Laravel 5.5

$category = Category::all();
$product = Product::all()->where('category_id', $category->name)->get();

从其名称中更改类别 ID link Laravel 5.5 中的两个表合二为一。

您需要 return 查看并传递数据,而不是 return 创建集合:

return view('some.view', [
    $category => Category::all();
    $product => Product::where('category_id', $category->name)->get();
]);

https://laravel.com/docs/5.5/views#passing-data-to-views

此外,当您这样做时:

$product=Product::all()->where('category_id',$category->name)->get();

您正在将数据库中的所有产品加载到内存中,然后过滤它们,因为 all() 正在执行查询。不要这样做。

请参阅 Laravel 有关建立关系的文档:

https://laravel.com/docs/5.5/eloquent-relationships

Category & Product 之间的关系是一对多的,所以它将是:

// app/Category.php
public function products()
{
    return $this->hasMany(Product::class);
}