与Laravel的关系

时间:2019-05-13 13:59:01

标签: php laravel laravel-5 eloquent

我不知道为什么,但是得到的结果是空的……我试图在supervisorbranc_office之间建立联系。

branch_office只有一个supervisorsupervisors可以管理许多branch_office

所以这是一对多的关系。

我的表是:

  • Branch_office字段:

    • id_branch_office
    • id_supervisor
    • branch_office
  • User字段:

    • id_user
    • name

id_supervisorid_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();

但它显示的结果为空或空...并且有一个id为1的branch_office

所以我想知道,这是怎么回事?因为我已经逐步完成了此操作,因此无法正常工作。

谢谢。

1 个答案:

答案 0 :(得分:1)

protected $table = 'branch_offices';

protected $primaryKey = 'id_branch_office';

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

在几乎所有关系中,第一个参数是模型,第二个是外键,第三个是本地键。同样,belongsTo函数仅返回一个记录或空值,您无需使用first()

BranchOffice::find(1)返回分支;

BranchOffice::find(1)->supervisor返回分支1的主管。

BranchOffice::with('supervisor')->find(1)和主管一起回到办公室