2015-06-07 2 views
0

У меня есть две модели один с именем Customer второй один Websiteметод belongsTo возвращения нуль

Отношения между ними, Customer hasMany Website в то время как Website belongsTo Customer

Это, как я делаю это

class Website extends \Eloquent { 
    use SubscriptionBillableTrait; 

    protected $fillable = []; 

    protected $guarded = ['id']; 

    public function customermodel() 
    { 
     // Return an Eloquent relationship. 
     return $this->belongsTo('Customer') 
    } 

} 

Customer модель

use Mmanos\Billing\CustomerBillableTrait; 
class Customer extends \Eloquent { 
    use CustomerBillableTrait; 
    protected $fillable = []; 

    protected $guarded = ['id']; 

    public function websites() { 
     return $this->hasMany('Website'); 
    } 

} 

При попытке получить доступ к Customer родством, как это

$website = Website::find(1); 
return dd($website->customermodel); 

возвращает нулевое

Примечание: Я использую Laravel 4

+0

не должен» t эти имена классов из отношения «Чудовище» содержат полное пространство имен '$ this-> принадлежит Too ('App \ Customer'); '(это, скорее всего, применимо только в том случае, если вы используете Laravel 5, но вы этого не указали). – Bogdan

+0

Используйте полное пространство имен при объявлении отношений, таких как '$ this-> hasMany ('App \ Models \ Website');' и '$ this-> принадлежитTo ('App \ Models \ Customer');'. Это работает? – Ohgodwhy

+0

@Bogdan Я использую Laravel 4, поэтому я не думаю, что это будет триггер. – Muhammad

ответ

0

Используйте этот

$website = Website::find(1)->with('customermodel'); 
return dd($website->customermodel); 
+0

Два вопроса: во-первых, нетерпевая загрузка не поможет. Доступ к атрибуту '$ website-> customermodel' будет ленить загружать данные, а затем отправлять их методу' dd() '. Во-вторых, 'find()' вернет модель. Затем вы вызываете 'с()' на модели, которая будет возвращать новый построитель запросов, поэтому следующая строка попытается получить доступ к атрибуту 'customermodel' в построителе запросов, что вызовет исключение. Перед методом, который фактически извлекает данные, вам нужно использовать метод '()': 'Website :: with ('customermodel') -> find (1)'. – patricus

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