Как я могу показать имя пользователя с помощью внешнего ключа? У меня есть 2 таблицы: пользователей и отделов, один отдел имеет только одного начальника и пользователь может быть начальником только одного отдела. Так что я думаю, что это "отношения один к одному". таблица отделов имеет «user_id» в качестве внешнего ключа от пользователей таблицы. В vue у меня есть:
<tr v-for = "departement in departements" :key = "id" >
<td>{{departement.id }}</td>
<td>{{departement.name }}</td>
<td>{{departement.user_id }}</td>
<td>{{departement.bio }}</td>
Я хочу отобразить имя пользователя из таблицы пользователей, у которого есть user_id. Спасибо.
Не работает Контролер отдела:
public function index()
{
return Departement::where('name','!=','admin')->latest()->paginate(100);
$departements = Departement::with('chief')->get();
return response()->ajax($departements, 200);
}
я прав?






Сначала нужно определить отношения.
Модальный отдел
public function chief()
{
return $this->belongsTo('App\User', 'user_id');
}
теперь извлеките данные с загруженным отделом.
Функция контроллера
$departments = Department::with('cheif')->get();
Теперь вы можете получить доступ к конкретному Cheif объекту в department объекте.
Во Вью
<td>{{ department.cheif.name }}</td>
mounted () {
axios.get('some/api/users')
.then(res => {
this.$set(this, 'users', this.users.reduce((accum, user) => accum[user.id] = user, {}))
// transform the JSON to an object that maps to the user id
})
}
<tr v-for = "departement in departements" :key = "id" >
<td>{{departement.id }}</td>
<td>{{departement.name }}</td>
<td>{{departement.user_id }}</td>
<td>{{departement.bio }}</td>
<td>{{users[department.user_id].name}}</td>
Когда я вижу данные в консоли навигатора, я получаю данные отдела и пользователя, у которого есть user_id, но он не отображается в таблице.
У меня есть данные отделов и начальника, но они не отображаются. не знаю почему!