Ограничение отношения Laravel / Eloquent на основе значений родительского столбца? - PullRequest
0 голосов
/ 15 октября 2019

У меня есть две модели в Laravel, и мне нужно определенное отношение между ними.

Родительская модель Track имеет эту связь с Wire:

        public function wire()
        {
           return $this->hasMany('App\Wire', 'machineID', 'machineID');
        }

Эта связь работаетоднако я должен ограничить это. Каждая строка в Track имеет два значения: date_from и date_to. Каждый Wire имеет значение date.

Мне нужно, чтобы отношение было ограничено теми Wire с date между date_from и date_to родительского Track.

Я уверен, что должен быть способ, но я попробовал следующее (ниже), и ничего не помогло.

Спасибо за вашу помощь!

метод 1

        public function wire()
        {
           return $this->hasMany('App\Wire', 'machineID', 'machineID')
                  ->whereBetween("wire.date", ["track.dateFrom", "track.dateTo"];
        }

метод 2

        ->with(["wire" => function($query) {
            $query->whereBetween("wire.date", ["track.dateFrom", "track.dateTo"]);
        }]);

1 Ответ

0 голосов
/ 15 октября 2019

с использованием Где может фильтровать контрольный провод трека, поэтому показывать, что только трек имеет провод между двумя датами:

   Track::WhereHas("wire", function($query) {
            $query->whereBetween("wire.date", ["track.dateFrom", "track.dateTo"])->get();
        });
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...