Как получить значение из другой таблицы, если она имеет отношение один ко многим в Eloquent laravel 6? - PullRequest
0 голосов
/ 18 января 2020

У меня есть 2 таблицы.

 1. Staff <br/>
    id | fname | lname | department

 2. Department<br/>
    id | name

Существует связь между персоналом и Департаментом. В отделе много сотрудников, а в штате один отдел. Сейчас я пытаюсь получить данные о сотрудниках. Поэтому вместо department в таблице Staff я должен получить имя из таблицы department.

Вот моя модель - Staff Model

class Staff extends Model
{
    protected $table = 'staff';

    protected $fillable = ['fname', 'lname', 'department'];

    function departments(){
        return $this->belongsTo(Department::class, 'department');
    }
}

И - Department Model

class Department extends Model
{
    protected $table = 'departments';

    protected $fillable = ['name', 'updated_at'];

    function staff(){
        return $this->hasMany('App\Staff', 'department');
    }
}

В моем контроллере я пытаюсь получить все сотрудники, но я получаю идентификатор отдела. Мне нужно название этого отдела. Как это возможно?

Заранее спасибо.

1 Ответ

1 голос
/ 18 января 2020

Поскольку он имеет отношение один ко многим department, вам нужно изменить staff model Проверьте -

class Staff extends Model
{
    protected $table = 'staff';

    protected $fillable = ['fname', 'lname', 'department'];

    function departments(){
        return $this->belongsTo(Department::class, 'id');
    }
}

А теперь, если вы хотите получить всю информацию о персонале.

В вашем controller -

public function index(){
 $data = Staff::with('departments')->find(1);
return $data->departments->name;
}

Надеюсь, это сработает.

...