Как указать два или более условия в методе find () в Laravel?

У меня проблемы с получением данных с помощью 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 не существует.

1

Решение

find() Метод использует ID для получения записи. Вам нужно использовать where() а также first() методы:

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

Другие решения

Вы должны использовать where для нескольких условий и получить первую строку с помощью метода 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

0
По вопросам рекламы ammmcru@yandex.ru
Adblock
detector