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

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如何在Laravel中的find()方法中指定两个或更多条件?相关的知识,希望对你有一定的参考价值。

我在使用带有两个条件的Model::find()获取数据时遇到问题。我想返回一个具有给定member_id的记录,其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不存在。

答案

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()方法中指定两个或更多条件?的主要内容,如果未能解决你的问题,请参考以下文章

Laravel 不经常用的小技巧

如何用Jquery获取Table指定行中指定列的数值

如何从急切加载中指定我们想要的列

C++ std::string::find_first_of()函数(在字符串中搜索与其参数中指定的任何字符匹配的第一个字符)

如何在链接或表单中指定 DELETE 方法?

LINQ 如何在一对多连接中指定选择某些列