У меня проблемы с получением данных с помощью 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();
Вы должны использовать where для нескольких условий и получить первую строку с помощью метода first (), find — это в основном псевдоним wehre (‘id’, $ id)
Чтобы было понятно, метод find () выполнит запрос к базе данных и вернет один объект модели в качестве результата. так что найти равно,
Model::where('id', 1)->first().
find()
возвращает объект Model и where()
возвращает QueryBuilder. Но вы можете напрямую выполнять построитель запросов без извлечения модели, например,
Model::where('id', 1)->delete().