我在使用带有两个条件的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().