#laravel #eloquent #laravel-7 #eloquent-relationship
#laravel #красноречивый #laravel-7 #eloquent-relationship
Вопрос:
У меня есть модель для подписки с отношением принадлежности к двум другим моделям, PhoneNumber и ToGoDevice.
Как номер телефона, так и общее устройство имеют много общих подписок.
У меня есть номер телефона и общее устройство, что мне нужно сделать, это получить общую подписку, которая принадлежит данному номеру телефона и общему устройству. Это всегда должна быть одна запись, если все работает нормально.
Это соответствующие столбцы, которые у меня есть в каждой таблице:
таблица телефонных номеров:
id
name
number
description
to_go_devices таблица:
id
name
mac
IP
в таблицу подписк:
id
phone_number_id
to_go_subscription_type_id
to_go_device_id
expiry_date
До сих пор я пробовал эти 2 фрагмента, но результаты, которые я получаю, нежелательны.
ToGoSubscription::where('phone_number_id', $phoneDetails->id)->with(['toGoDevice' => function($q){
$q->where('to_do_devices.id', '=', $deviceId);
}])->get();
и
$phoneDetails->toGoSubscription($deviceDetails->id)->get();
Все, что мне нужно, это получить одну подписку, которая относится к номеру телефона $ и к имеющемуся у меня mac $. Я могу получить данные $ phoneDetails из таблицы phone_numbers и данные $deviceDetails, используя $mac из таблицы to_go_devices.
Я действительно не могу разобраться в красноречивом способе получения подписки, которая принадлежит номеру телефона и тому устройству, которое у меня есть. Некоторая помощь здесь будет действительно оценена.
Комментарии:
1. почему бы просто не: для подписки:: where(‘phone_number_id’, $phoneDetails-> id)->where(‘to_go_device_id’, $DeviceID) ->get();
2. Спасибо @OMR, я не знал, что могу связать 2 где. Как свалка меня!
3. приветствую вас, я сделаю свой комментарий в качестве ответа, чтобы мы могли считать этот вопрос решенным
Ответ №1:
вы можете использовать цепочку, где:
$value= ToGoSubscription:: where('phone_number_id', $phoneDetails->id)->where('to_go_device_id', $deviceId) ->get();