Отношения с Laravel - PullRequest
       8

Отношения с Laravel

0 голосов
/ 13 мая 2019

Я не знаю почему, но результат, который я получаю, пуст ... Я пытаюсь установить связь между supervisor и branc_office.

Просто branch_officeимеет один supervisor.supervisors может иметь множество branch_office для управления.

Таким образом, отношение 1 к Многим.

Мои таблицы:

  • Branch_office поля:

    • id_branch_office
    • id_supervisor
    • branch_office
  • User поля:

    • id_user
    • name

id_supervisor и id_user составляютотношение между ними.

id_supervisor (внешний ключ) ----- id_user (первичный ключ)

Мои модели:

User.php

use Notifiable;

protected $primaryKey = 'id_user';

/**
 * The attributes that are mass assignable.
 *
 * @var array
 */
protected $fillable = [
    'full_name', 'email', 'password',
];

/**
 * The attributes that should be hidden for arrays.
 *
 * @var array
 */
protected $hidden = [
    'password', 'remember_token',
];

 /**
 * Get the comments for the blog post.
 */
public function branch_offices()
{
    return $this->hasMany('App\Branch_Office', 'id_supervisor');
}

Branch_office.php

protected $table = 'branch_offices';

protected $primaryKey = 'id_branch_office';

/**
 * Get the post that owns the comment.
 */
public function supervisor()
{
    return $this->belongsTo('App\User', 'id_user');
}

В контроллере я делаю это:

$branch_office_detail = Branch_Office::find(1)->supervisor()->first();

но он отображаетнулевой или пустой результат ... и есть branch_office с id = 1

Так что мне интересно, что это не так?потому что я сделал это шаг за шагом, и это не работает.

Спасибо.

1 Ответ

1 голос
/ 13 мая 2019
protected $table = 'branch_offices';

protected $primaryKey = 'id_branch_office';

public function supervisor()
{
    return $this->belongsTo('App\User', 'id_supervisor', 'id_user');
}

Почти во всех отношениях первый параметр - это модель, второй - внешний ключ, третий - локальный ключ.Также функция ownTo возвращает только одну запись или ноль, вам не нужно использовать first ()

BranchOffice::find(1) возвращает ветвь;

BranchOffice::find(1)->supervisor возвращает супервизор ветки 1

BranchOffice::with('supervisor')->find(1) вернуть офис супервайзеру

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...