2013-06-12 6 views
0

У меня есть модель продаж, и когда я звоню Quote::find('1');, он не возвращает мой объект продаж. Я сделал что-то не так с моими отношениями? Вот структура таблицы:Laravel Eloquent Relationship

Цитата: идентификатор, COMPANYNAME, сцена, SaleID

Продажа: идентификатор, имя, PHONENUMBER

Class Quote extends Eloquent 
{ 

    protected $with = ['sale']; 

    public function sale() 
    { 
     return $this->hasOne('Sale', 'id'); 
    } 
} 

В моей Sale модели я определил:

public function quote() 
{ 
    return $this->belongsTo('Quote'); 
} 
+0

Вы имеете в виду 'Продажа :: find (1)'? –

+0

Нет, я имею в виду Quote :: find (1). Я редактировал свой вопрос. Он возвращает Цитату, а не продажу. – ipengineer

+0

Вы назвали 'Quote :: find ('1') -> sale-> name'?> –

ответ

0

Попробуйте следующее:

$quote = Quote::with('sale')->find(1); 

Вы должны уметь тогда что-то вроде этого $quote->sale->name

1

Я понял. Были мои отношения назад.

Class Quote extends Eloquent 
{ 

    protected $with = ['sale']; 

    public function sale() 
    { 
     return $this->belongsTo('Sale', 'saleId'); 
    } 
} 

Чтобы понять это лучше, я думаю, можно сказать, что в отношениях belongs_to, внешний ключ постоянно находится в таблице модели вы пытаетесь создать связь с. Таким образом, вышеуказанная функция может быть прочитана как «saleID принадлежит модели продажи».

Внешний ключ находится в таблице другой модели при использовании has_one.