2015-01-17 4 views
1

Я дал существующей базу данных с двумя таблицами:Laravel красноречив "belongsTo"/"hasOne"

customers (address_id) 
addresses 

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

Теперь я ищу функцию модели для получения адреса от клиента, чтобы использовать что-то вроде {{ $customer->address }} в шаблоне лезвия:

например Customer.php

public function address() { 
    return $this->belongsTo('Address', 'CustomerID', 'AddressID'); 
} 

q: как получить связанный адрес для клиента?

// Редактировать: это существующая таблица с данными, которые я сейчас не могу обновить.

Моя работа вокруг было:

$customer->address = Address::find($customer->AddressID); 
+0

каких проблем вы столкнулись в настоящее время? –

ответ

3

Параметры в вашем звонке belongsTo немного ошибаются. Попробуйте это:

$this->belongsTo('Address', 'AddressID'); 
           ^
          foreign key 

Вы можете пропустить 3-й аргумент, пока $primaryKey собственности на Address модели установлена ​​(или это обычный id)

+0

Удивительный, этот маленький намек сделал это! <3 – wiesson

1

В модели клиента создать функцию, как это

public function address() { 
    return $this->hasOne('Address', 'CustomerID', 'AddressID'); 
} 

Где Address это название адреса модели CustomerID является первичным ключом в customers (я рекомендую использовать только id) и AddressID - ссылка на Address в таблице клиентов. Итак, теперь вы можете использовать {{ $customer->address }}, который будет извлекать адрес клиента.

+1

Да, я подумал что-то вроде этого. Но адрес не имеет идентификатора клиента. – wiesson

+0

Я обновил сообщение. –

Смежные вопросы