如何在Laravel中的find()方法中指定两个或更多条件?
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Laravel中的find()方法中指定两个或更多条件?相关的知识,希望对你有一定的参考价值。
我在使用带有两个条件的Model::find()
获取数据时遇到问题。我想返回一个具有给定member_id
的记录,其role
是guest
:
$member = CalendarMembers::find(["member_id" => $r->member_id, "role" => "guest"]);
但这不起作用。我有一个用户在创建时,将一个新的寄存器添加到calendar_members
表中,将该用户指定为parent
,但是,当试图通过仅提供member_id
来获取自动创建的用户时,它将被取出,但不应该。
我不能使用其他方式,例如:
$member = \DB::table("calendar_members")->where([ ["member_id", "=", $r->member_id], ["role", "=", "guest"] ])->first();
因为那时$member->delete()
或$member->destroy()
会抛出一个错误,说delete
或destroy
不存在。
答案
find()
方法使用ID来获取记录。你需要使用where()
和first()
方法:
CalendarMembers::where(['member_id' => $r->member_id, 'role' => 'guest'])->first();
另一答案
你应该在多个条件的位置使用first并使用first()方法获取第一行,find基本上是wehre的别名('id',$ id)
另一答案
为了清楚起见,find()方法将执行数据库查询并返回单个模型对象作为结果。所以发现等于,
Model::where('id', 1)->first().
find()
返回Model对象,where()
返回QueryBuilder。但您可以直接在查询生成器上执行而无需获取模型,例如,
Model::where('id', 1)->delete().
REF:https://laravel.com/docs/5.6/eloquent
以上是关于如何在Laravel中的find()方法中指定两个或更多条件?的主要内容,如果未能解决你的问题,请参考以下文章
C++ std::string::find_first_of()函数(在字符串中搜索与其参数中指定的任何字符匹配的第一个字符)