Laravel Eloquent для извлечения третьей таблицы / значения отношения - PullRequest
1 голос
/ 16 марта 2019

У меня есть 3 таблицы в базе данных

  1. Транзакция {'id','bill_id','remark'}
  2. Счета {'id','third_party','amount'}
  3. ThirdParty {'id','company_name',remark}

Таблица 'транзакция' содержит столбец bill_id из 'Счета' , а таблица счетов имеет 'third_party' столбец, который связан с таблицей ThirdParty столбец -> ' идентификатор '

Итак, я пытаюсь получить company_name, используя красноречивое отношение laravel

Моя Транзакция Модель:

public function Bills()
{
    return $this->hasOne('App\Bills','id','bill_id');
}

Законопроекты:

public function third_party()
{
    return $this->belongsTo('App\ThirdParty','third_party','id');
} 

Я получаю ноль значение для company_name

enter image description here

Вот запрос, который я использую

Transaction::with('Bills.third_party')->get();

И я исправил в вопросе (third_party_name) имя столбца company_name, которое я написал здесь, - это мое старое имя запроса на присоединение, которое видно на скриншоте, в основном я пытаюсь получить название компании.

1 Ответ

0 голосов
/ 16 марта 2019

Вы можете показать весь свой код? Как для company_name указывается значение second_party_name?

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

например. Ваши имена методов отношений (Bills (), third_party ()), но, что более важно, если вы назовете поля таблицы «путями», вы получите более простые красноречивые отношения, так как не нужно будет определять внешние ключи и т. Д.

Я бы настроил это так:

  1. Транзакция {'id', 'bill_id', 'примечание'}
  2. Счета {ID ',' Third_party_id ',' Сумма '} <- обратите внимание на Third_party_id </li>
  3. ThirdParty {'id', 'company_name', примечание}

    class Transaction extends Model
    {
        public function Bills()
        {
            return $this->hasOne('App\Bills');
        }
    }
    
    class Bills extends Model
    {
        public function ThirdParty()
        {
            return $this->belongsTo('App\ThirdParty);
        }
    }
    

Вы должны также определить обратные отношения.

Было бы очень полезно увидеть полный код, чтобы увидеть, в чем проблема.

...