Упростите проверку взаимосвязи по связанной таблице для внешнего ключа - PullRequest
0 голосов
/ 30 августа 2018

Моя схема БД выглядит примерно так:

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 - я не могу изменить схему БД. К сожалению, я должен работать с тем, что у меня есть.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...