2015-05-05 2 views
0

В моем приложении у меня есть пользователи и билеты.принадлежитTo не работает в laravel

В таблице 'билеты' У меня есть один внешний ключ, например:

$table->integer('user_id')->unsigned(); 
$table->foreign('user_id')->references('id')->on('users'); 

В модели 'Ticket' У меня есть эти отношения:

public function owner() 
{ 
    return $this->belongsTo('App\User'); 
} 

модель Пользователь:

public function createdTickets() 
{ 
    return $this->hasMany('App\Ticket'); 
} 

Посредством этого:

dd(\Auth::user()->createdTickets()->get()->toArray()); 

Получаю все билеты, никаких проблем здесь. Но когда я пытаюсь получить владелец от билета, это дает мне нуль:

$ticket = \Auth::user()->createdTickets()->first(); 
dd($ticket->owner); //if I try dd($ticket) it juts fine. 

PS: Для записи, у меня есть еще один тип отношений между два моделью (многие ко многим)

билет:

public function followers() 
{ 
    return $this->belongsToMany('App\User')->withTimeStamps(); 
} 

Пользователь:

public function followingTickets() 
{ 
    return $this->belongsToMany('App\Ticket')->withTimeStamps(); 
} 
+0

вы должны не называть, что владелец в качестве функции '$ ticket-> владелец()', или это волшебно разрешаться Laravel? – Pevara

+0

Если я делаю $ ticket-> owner(), laravel позволяет мне делать такие вещи, как $ ticket-> owner() -> first(), $ ticket-> owner() -> where() и т. Д. Выполняя $ ticket -> владелец, laravel должен дать мне объект Collection –

ответ

0

Я получил мой ответ на laracasts форумах:

Laracasts

для «belongsTo» отношения красноречивым использует имя метода внешнего ключа. Я использую owner(), поэтому красноречие искало поле owner_id.

Так что я должен был сделать это:

public function owner() 
{ 
    return $this->belongsTo('App\User', 'user_id'); 
} 
Смежные вопросы