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

问题描述 投票:1回答:3

我在使用带有两个条件的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不存在。

php laravel model
3个回答
1
投票

find()方法使用ID来获取记录。你需要使用where()first()方法:

CalendarMembers::where(['member_id' => $r->member_id, 'role' => 'guest'])->first();

0
投票

你应该在多个条件的位置使用first并使用first()方法获取第一行,find基本上是wehre的别名('id',$ id)


0
投票

为了清楚起见,find()方法将执行数据库查询并返回单个模型对象作为结果。所以发现等于,

Model::where('id', 1)->first().

find()返回Model对象,where()返回QueryBuilder。但您可以直接在查询生成器上执行而无需获取模型,例如,

Model::where('id', 1)->delete().

REF:https://laravel.com/docs/5.6/eloquent

© www.soinside.com 2019 - 2024. All rights reserved.