基于布尔参数的 Laravel eloquent call realtionship

Posted

技术标签:

【中文标题】基于布尔参数的 Laravel eloquent call realtionship【英文标题】:Laravel eloquent call realtionship based on a boolean parameter 【发布时间】:2022-01-03 05:32:54 【问题描述】:

我正在尝试创建一种方法来检索具有关系的模型,我希望能够基于布尔参数获取关系 例如,我可以使用下面的 if 条件来做到这一点

if($load == true)
   $users = User::with('login')->all()->paginate();
else
$users = User::all()->paginate();

我想知道是否有办法在不使用 if 条件的情况下做到这一点

【问题讨论】:

【参考方案1】:

您可以在查询生成器上使用when() 方法。请注意,当您想使用分页器时,不需要使用all() 方法。

User::query()
    ->when($load, fn($query) => $query->with('login'))
    ->paginate();

【讨论】:

非常感谢【参考方案2】:

你可以使用when方法:

 $users = User::when($load, function ($query) 
                    return $query->with('login');
                )->paginate(10);

when 方法仅在第一个参数为真时执行给定的闭包。如果第一个参数为 false,则不会执行闭包

【讨论】:

谢谢你的工作

以上是关于基于布尔参数的 Laravel eloquent call realtionship的主要内容,如果未能解决你的问题,请参考以下文章

PHP Laravel - Eloquent 在调用方法 json 时随机返回布尔字段,有时为 0 1,其他为 true false

Laravel Eloquent - 更新()函数

一次更新多行 Laravel Eloquent

Laravel Eloquent 搜索表单查询(表单中的多个参数)

Laravel Eloquent 匹配连接的所有参数

如何将参数传递到链式 Laravel Eloquent 关系中的位置