Laravel 4 eloquent 模型链接额外的 where 子句

2021-12-26 00:00:00 php laravel laravel-4 eloquent

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

I Have the following code (member is just a standard Eloquent model)

$members = new Member;
$members->where('user_id', '=', 5);
$_members = $members->get();

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

The last query run produces "SELECT * from members", so it seems to be ignoring my where clause, what am I doing wrong here?

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

By the way I know I could do $members = new Member::where(...) etc... but I will be adding the where clauses in a loop in order to create filtering on the results from the database.

更新

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

The only way around this seems to be to add a where that will catch all on initialization such as:

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

但这看起来有点像黑客.我不想做任何复杂的事情,所以我不能是唯一遇到这个问题的人吗?

But this seems quite a bit of a hack. I am not trying to do anything complicated so I cant be the only one who has had this problem?

可能是固定的

对于在这里偶然发现的任何人,我已经使用以下方法解决了这个问题:

For anyone who has stumbled here I have fixed this by using:

$members =  Member::query();
$members->where('user_id', '=', 5);
$_members = $members->get();

不确定这是否是正确的方法,但它对我有用,而且看起来不像黑客.

Not sure if that is the correct way but it works for me and doesn't appear like a hack.

推荐答案

我不相信 Eloquent 是这样工作的.

I don't believe Eloquent works like that.

试试这个...

$members = new Member;
$members = $members->where('user_id', '=', 5);
$members = $members->get();

相关文章