2017-01-27 3 views
1

У меня есть User и Project модели.Laravel 5.4: Много для многих записей сводных таблиц

Отношения много для многих.

public function projects() 
{ 
    return $this->belongsToMany('App\Project')->withPivot('id');; 
} 

И в Project модели у меня есть:

public function users() 
{ 
    return $this->belongsToMany('App\User')->withPivot('id');; 
} 

Теперь то, что я делаю:

$projectsAsFreelancer = App\Project::where('assignedTo',$id)->get();

Что я хочу, чтобы получить username из users таблицы из пользователь, который опубликовал проект. Project означает projects стол forign_key ->employeer_id.

В настоящее время $project->pivot->username дает мне ошибку.

pivot имя таблицы project_user.

Что мне не хватает?

ответ

0

$project->pivot->username требуется поле username в вашем сводном столе. ->withPivot('id'); требуется только в том случае, если вы хотите получить столбец поворотного стола id, $project->pivot->id wil дать значение.

Если вы хотите получить имя пользователя из таблицы пользователей, вам не нужна сводная таблица.

$projectsAsFreelancer = App\Project::where('assignedTo',$id)->get(); 
foreach($projectsAsFreelancer as $project) 
{ 
    echo $project->name; 
    foreach($project->users as $user) 
    { 
     echo $user->username; 
     } 
} 
+0

Да я могу сделать это, но мне нужен объект проекта тоже! – Gammer

+0

@Gamer '$ projectsAsFreelancer' дает коллекцию объектов, а' $ project' внутри foreach дает вам объект. –

+0

Чтобы объект снова нуждался в 'foreach' означает foreach в foreach? – Gammer

0

Не использовать get(). Он не мог найти отношения. Вы можете использовать first() или find() (если вы хотите выбрать с первичным ключом)

$projectsAsFreelancer = App\Project::where('assignedTo',$id)->first(); 
foreach ($projectsAsFreelancer->users as $user) { 
    //var_dump($user->username); 
} 
+0

Да, я могу это сделать, но мне тоже нужен объект проекта! – Gammer

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

  • Нет связанных вопросов^_^