Laravel Eloquent属于关系不起作用

时间:2017-02-13 07:17:31

标签: php sql database laravel eloquent

我正在尝试使用Eloquent belongsTo在两个表之间创建关系,但它似乎不起作用。

这两个表是文档和部门,每个文档属于一个部门。

文件

id INT
department INT

部门

id INT
name varchar(255)

这是定义关系的函数

public function department(){
    // department: foreign key
    // id : departments table primary key
    return $this->belongsTo('\App\Department' , 'department' , 'id');
}

这是访问者函数

public function getDepartmentAttribute(){
    return $this->department()->first()->name;
}

它返回以下错误消息:Undefined property: App\AjaxSearch::$department

2 个答案:

答案 0 :(得分:3)

在文件表中添加

department_id INT Foreign

在您的文档迁移中

$table->integer('department')->unsigned();

同时编辑关系

public function department() {
    return $this->belongsTo('App\Department', 'department');
}

更新

根据您的更新,您可以获得这样的部门名称

$doc = Document::find(1);
$name = $doc->department->name;

答案 1 :(得分:0)

您需要检查相关记录是否存在

public function department()
{
    return $this->belongsTo('App\Department', 'department');
}

$ document是您当前的文档记录。

$name = (empty($document->department->id) === false) ? ($document->department->name) : '';