【问题标题】:How to use with in Query Builder in laravel如何在 laravel 的查询生成器中使用 with
【发布时间】:2021-11-02 08:01:39
【问题描述】:

我正在尝试使用 slug 在 2 个表之间获取数据, 当我使用 Eloquent 时,一切都很好,但是如何在查询生成器中转换该查询。

雄辩的查询:

$results = Product::orderBy('id','desc')->with('categories')->whereHas('categories', function ($query){
        $query->where('slug', request()->sub_category);
    })->paginate(24);

这里我使用了两个表产品和类别。

查询生成器:

$results = DB::table('products')
        ->leftJoin('wishlists', 'products.product_id', '=', 'wishlists.product_id')
        ->select('products.*', 'wishlists.wishlist_id', 'wishlists.user_id')
        ->with('menus')
        ->whereHas('categories', function ($query){
            $query->where('slug', request()->category);
        })
        ->orderBy('products.name', 'asc')
        ->paginate(24);

但我在这里使用 3 个表格,产品、菜单和愿望清单。 Bcoz 当用户进入产品页面时,我也会突出显示愿望清单的产品。

错误:

Call to undefined method Illuminate\Database\Query\Builder::with()

【问题讨论】:

  • with() 仅适用于 Eloquent 模型。即Product::with('menu')

标签: laravel eloquent laravel-8 laravel-query-builder


【解决方案1】:

你也可以在 eloquent 中使用多个,

试试这个

$results = Product::orderBy('id','desc')->with(['menus','categories' => function ($query){
    $query->where('slug', request()->sub_category);
}])->paginate(24);

【讨论】:

    猜你喜欢
    • 2019-10-02
    • 2017-03-29
    • 1970-01-01
    • 2020-12-25
    • 2017-12-28
    • 2019-05-06
    • 2018-09-28
    • 2013-05-30
    相关资源
    最近更新 更多