Laravel 4雄辩的模型链接附加条款

NaN*_*NaN 1 php laravel eloquent laravel-4

我有以下代码(成员只是一个标准的Eloquent模型)

$members = new Member;
$members->where('user_id', '=', 5);
$_members = $members->get();
Run Code Online (Sandbox Code Playgroud)

最后一个查询运行产生" SELECT * from members",所以它似乎忽略了我的where子句,我在这里做错了什么?

顺便说一句,我知道我可以做其他$members = new Member::where(...)...但我会where在循环中添加子句,以便对数据库的结果进行过滤.

UPDATE

解决这个问题的唯一方法似乎是添加一个可以捕获所有初始化的地方,例如:

 $members = Member::where('member_id', '<>', 0);
 $members->where('user_id', '=', 5);
 $_members = $members->get();
Run Code Online (Sandbox Code Playgroud)

但这似乎有点像黑客.我不想做任何复杂的事情,所以我不能成为唯一一个遇到这个问题的人?

固定可能

对于那些在这里跌跌撞撞的人我已经通过以下方式解决了这个问题:

$members =  Member::query();
$members->where('user_id', '=', 5);
$_members = $members->get();
Run Code Online (Sandbox Code Playgroud)

不确定这是否是正确的方法,但它适用于我,并不像一个黑客.

use*_*496 6

我不相信Eloquent就是这样的.

试试这个...

$members = new Member;
$members = $members->where('user_id', '=', 5);
$members = $members->get();
Run Code Online (Sandbox Code Playgroud)

  • *是*差异 - 调用` - >的输出where()`被重新设置为$ members变量.关键是如果最初的$ members是Builder的一个实例,那么你的代码就可以工作了.但实际上它是Model的一个实例(好的成员),所以当你在它上面调用`where`时,它必须首先返回一个Builder.然后你可以进一步调用`where`s而不必设置变量. (3认同)