Laravel Eloquent HasMany / HasOne Дополнительные предложения - PullRequest
0 голосов
/ 11 мая 2018

Доброе утро,

Извинения, если об этом уже спрашивали, но мы не можем найти ответ на вопрос, который у нас есть.

Мы работаем с устаревшей базой данных, которая непринадлежит нам (только для чтения) и пытается использовать Eloquent (модели) в Laravel для решения некоторых распространенных проблем.

Возможно ли настроить Eloquent Eager-loading для создания дополнительных предложений ON для HasMany / HasOneпостроитель отношений?

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

public function policy()
{
    return $this->hasMany(Policy::class, 'Group', 'Group')
        // This breaks as `on` isn't defined on Eloquent\Builder. Is this concept possible? Multiple on clauses
        ->on('Reference', 'Reference');
}

В нашем контроллере мы попытались выполнить следующее, что также не удалось.

 Vehicle::with([
        'policy' => function ($query) {
            // Model isn't instantiated yet, but we need an additional on clause here
            $query->on('Reference', 'Reference');
        }
   ]);

Можно ли достичь вышеизложенного или мы должны вернуться к использованию необработанных запросов?

Заранее благодарен за любую помощь.

Ответы [ 2 ]

0 голосов
/ 19 мая 2018

Вы можете использовать пакет Compoships:

class Vehicle extends Model
{
    use \Awobaz\Compoships\Compoships;

    public function policy()
    {
        return $this->hasMany(Policy::class, ['Group', 'Reference'], ['Group', 'Reference']);
    }
}
0 голосов
/ 11 мая 2018

Я предполагаю, что запрос уже существует как необработанный SQL, и что вы пытаетесь достичь, это преобразовать его в использование eloquent. Если это так, вы можете быстрее использовать встроенный необработанный запрос.

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