首页 > 解决方案 > 在 Laravel 中,我的表列被连接覆盖,我该如何解决?

问题描述


我的应用程序中有一个小问题...
我想从产品表中获取所有产品以及类别表中的类别名称,并从 products_attribute 表中获取每个产品的库存...
问题是产品表 id 被覆盖products_attribute ID。在 product_attributes 表中,只有 116 行,但 products 表有 177 行,循环仅获得 116 行的 products_attribute id。

Product Table(截屏)

Product Attributes Table(截屏)

Categories Table(截屏)

public function viewProducts(Request $request)
{
    $products = Product::join('categories', 'categories.id', 'products.category_id')->join('products_attributes', 'products_attributes.product_id', 'products.id')->get();
    $products = json_decode(json_encode($products));

    return view('admin.products.view_products')->with(compact('products'));
}

标签: phpmysqllaraveljoineloquent

解决方案


Laravel 连接函数默认为内连接,因此您需要使用该leftJoin方法。(见\vendor\laravel\framework\src\Illuminate\Database\Query\Builder@join


推荐阅读