【问题标题】:Issue with Laravel Lazy Eager LoadingLaravel 延迟加载的问题
【发布时间】:2019-04-20 23:48:56
【问题描述】:

我在基于 hasMany 关系从数据库中获取数据并将其发送到 Larave 中的 api 时遇到问题。 在下面的代码中,Laravel 没有给我 Customer id = $id 的 Customer 产品。我不知道为什么,我无法在 $query 旁边发送 $id。如果我在 '' 中写数字,我有很好的答案,但我需要自动接受。

$products = Product::where('name', 'like', '%'.$request->q.'%')->orWhere('symbol', 'like', '%'.$request->q.'%')->with(['customers' => function ($query, $id) {
    $query->where('id', '=', $id);
}])->get();

所有api代码

Route::get('/customer/{id}/products', function(Request $request, $id){
   $customer = Customer::findOrFail($id);
   $products = Product::where('name', 'like', '%'.$request->q.'%')->orWhere('symbol', 'like', '%'.$request->q.'%')->with(['customers' => function ($query, $id) {
       $query->where('id', '=', $id);
   }])->get();

   return $products;
});

提前谢谢你。

【问题讨论】:

    标签: laravel api eloquent


    【解决方案1】:

    如果您想在with 方法中使用变量,您必须在function($query) 之后键入use($id),如下面的代码。

    $products = Product::where('name','like','%'.$request->q.'%')
        ->orWhere('symbol', 'like', '%'.$request->q.'%')
        ->with(['customers' => function ($query) use($id) {
             $query->where('id', '=', $id);
        }])->get();
    

    如果您需要查找具有这些客户条件的产品,您可以使用whereHas 函数。查看此post 了解更多信息。

    【讨论】:

    • 没什么朋友。只需接受答案,以便其他人可以看到结果。谢谢
    • 好的,我是新手,不知道accept,对不起。
    猜你喜欢
    • 2021-04-23
    • 2012-08-07
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多