Присоединяйтесь в локальной сфере - PullRequest
0 голосов
/ 22 октября 2018

Я делаю локальную область видимости для моей модели.В моей области я присоединяюсь к таблице, но затем в моем наборе результатов я теряю свою ссылку на мои отношения.

В модели Entry у меня есть эти отношения:

  public function items() {
    return $this->hasMany('App\Models\Accounting\EntryItem', 'entry_id');
}

и эта область:

public function scopeWithConst($query, $const_code) {
    return $query->join('consts', function($join) use($const_code) {
                $join->on('consts.code', '=', $const_code);
            });
}

В контроллере:

 $entry = Entry::with('items')->withConst('entries.status')->find($id);

Всегда возвращает «items»: [] из-за вызова контекста withConst!

Любое объяснение?

1 Ответ

0 голосов
/ 22 октября 2018

Вам необходимо заменить 'records.status' значением 'records.status' этого конкретного $ id в искомой записи.Вы можете сделать это с помощью замыкания или путем нахождения значения перед вызовом withConst.

$status = Entry::find($id)->pluck('status');
$entry = Entry::with('items')->withConst($status)->find($id);

или

$entry = Entry::with('items')->withConst(function() use ($id) {
    return Entry::find($id)->pluck('status');
    }
  )->find($id);

Области являются, насколько мне известно, ограничениями многократного использования, не предназначенными для объединений, где задействованы 2 таблицы.В зависимости от того, насколько вам нужен прицел, держите его обычным способом без прицела.

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