如何在Laravel中的find()方法中指定两个或多个条件?

时间:2018-03-01 08:57:22

标签: php laravel model

我在使用Model::find()两个条件获取数据时遇到问题。我想返回一条具有给定member_id AND 的记录roleguest

$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()会引发错误,指出deletedestroy不存在。

3 个答案:

答案 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().

参考:https://laravel.com/docs/5.6/eloquent