Моя схема БД выглядит примерно так:
applications
- id
- merchant_id
- merchant_channel_id
merchants
- id
merchant_channels
- id
- merchant_id
Чтобы создать новое приложение:
$application = new Application;
$application->merchant_id = $data->merchant_id;
// Check the supplied merchant_channel_id is related to the supplied merchant_id
$merchant_channel = MerchantChannel::where('merchant_id', $data->merchant_id)
->findOrFail($data->merchant_channel_id);
$application->merchant_channel_id = $merchant_channel->id;
$application->save();
Как видите, я должен быть уверен, что указанный идентификатор канала продавца принадлежит указанному идентификатору продавца, прежде чем я сохраню приложение. Хорошо.
Но есть ли менее грязный способ сделать это, используя отношения, которые снимают с меня ответственность?
В модели приложения определены следующие отношения:
class Application extends Model
{
public function merchant()
{
return $this->belongsTo(Merchant::class, 'merchant_id');
}
public function merchant_channel()
{
return $this->belongsTo(MerchantChannel::class, 'merchant_channel_id');
}
PS - я не могу изменить схему БД. К сожалению, я должен работать с тем, что у меня есть.