Laravel 当条件与表上的列值有关时

Laravel 当条件与表上的列值有关时,laravel,laravel-5,eloquent,Laravel,Laravel 5,Eloquent,如何在Elount laravel的when函数上添加查询的条件值 这就是我想要发生的事情 正如您所看到的,我只想在记录的列等于3时获得角色admin,我如何才能做到这一点?多谢各位 附言 只是一个示例查询。谢谢。这不是工作原理, 第一个条件'logged'='3'将始终返回false 因此不使用闭包查询,直接使用get方法,返回所有用户记录 您需要这样做: $user=user::wherefunction$q{ $q->其中['logged'=>3,'role'=>'admin'] }->或

如何在Elount laravel的when函数上添加查询的条件值

这就是我想要发生的事情

正如您所看到的,我只想在记录的列等于3时获得角色admin,我如何才能做到这一点?多谢各位

附言

只是一个示例查询。谢谢。

这不是工作原理, 第一个条件'logged'='3'将始终返回false

因此不使用闭包查询,直接使用get方法,返回所有用户记录

您需要这样做:

$user=user::wherefunction$q{ $q->其中['logged'=>3,'role'=>'admin'] }->或“已记录”的位置,“!=”,3->get;
如果传入请求中存在给定的输入值,则可能只希望应用where语句。简而言之,第一个条件不是基于表字段,而是基于您的请求。所以@TsaiKoga的答案是正确的

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


请阅读这里的文档

这不是我想做的。我只想添加where'role',admin',如果logged==3,而不是两者都是where@Jovslogged是users表的列?role和logged都是users表的列。我只想在logged等于时将3@Jovs所以,如果logged=3将返回admin,而其他logged值将返回all-role,您是否希望获取?我已经发布了,这是你期望的吗?这可以解决我目前的问题。但我仍然希望使用when函数,因为将来我还需要向条件中添加一个非列值。你有解决办法吗?我知道when方法只在第一个参数为true时执行给定的闭包。这就是为什么我要用这个。我还打算在将来的情况下写一篇not专栏。
$user = User::when('logged' == '3', function ($q){
        $q->where('role', 'admin');
        )}->get();