2015-06-13 4 views
0

У меня есть ContactForm модель, которая относится к модели IssueCat. это соотношение определяется в модели следующим образом:laravel relationship throw non object error

class ContactForm extends \Eloquent { 

    // Add your validation rules here 
    public static $rules = [ 
     // 'title' => 'required' 
    ]; 

    // Don't forget to fill this array 
    protected $fillable = []; 

    public function issue_cat(){ 
     return $this->belongsTo('IssueCat'); 
    } 

} 

class IssueCat extends \Eloquent { 

    // Add your validation rules here 
    public static $rules = [ 
     // 'title' => 'required' 
    ]; 

    // Don't forget to fill this array 
    protected $fillable = []; 

    public function contact_forms(){ 
     return $this->hasMany('ContactForm'); 
    } 

} 

Когда я запрашиваю контактную форму с помощью $cf = ContactForm::findOrFail($id), следующий сценарий бросить ошибку

$cf->issue_cat->issue_name 

FYI, в ContactForm таблице я установить внешний ключ из IssueCat в issue_cat_id который является решением для issue_cats.id. что может быть проблемой, я уверен, что что-то пропустил.

ответ

0

Перед попыткой использования этого динамического свойства в качестве объекта вам нужно будет проверить значение null. Он может возвращать значение null, если отношения не существуют в базе данных.

Убедитесь, что запись базы данных для текущей модели контактной формы имеет правильный набор клавиш, соответствующий существующей записи IssueCat.

Возможно, вы захотите переименовать эти отношения в форму для верблюда.

public function issueCat() { ... } 

Метод getAttribute будет искать способ, который имеет место в случае форма верблюд атрибута, который вы пытаетесь получить доступ.