我在使用Model::find()
两个条件获取数据时遇到问题。我想返回一条具有给定member_id
AND 的记录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
不存在。
答案 0 :(得分:1)
find()
方法使用ID来获取记录。您需要使用where()
和first()
方法:
CalendarMembers::where(['member_id' => $r->member_id, 'role' => 'guest'])->first();
答案 1 :(得分:0)
你应该在多个条件的位置使用first并使用first()方法获取第一行,find基本上是wehre的别名(' id',$ id)
答案 2 :(得分:0)
为清楚起见,find()方法将执行数据库查询并返回单个模型对象作为结果。所以发现等于,
Model::where('id', 1)->first().
find()
返回Model对象,where()
返回QueryBuilder。但您可以直接在查询生成器上执行而无需获取模型,例如
Model::where('id', 1)->delete().