当我建立一个雄辩的关系时,这会引起问题,在这里我展示我的代码,我使用修补匠来查看关系,但它没有建立

时间:2019-05-21 10:03:31

标签: laravel eloquent

当我建立一个雄辩的关系时,会在这里出现问题,我展示了我的代码,我使用修补匠来查看关系,但是它没有建立

pass.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class pass extends Model
{
    public function salman()
    {
        return $this->belongsTo(salman::class);
    }
}

salman.php

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class salman extends Model
{
    public function passport()
    {
        return $this->hasOne(pass::class);
    }
}
  

Illuminate \ Database \ QueryException(42S22)   SQLSTATE [42S22]:找不到列:1054“ where子句”中的未知列“ passes.salman_id”(SQL:从passes中选择*,其中passessalman_id = 1和{{ 1}}。passes不能为空限制1)

以前的例外情况

  

SQLSTATE [42S22]:找不到列:1054'where子句'(42S22)中未知的列'passes.salman_id'

2 个答案:

答案 0 :(得分:0)

在数据库表passes中,必须有一个名为salman_id的列。

因此,在您的迁移文件中添加:

$table->unsignedInteger("salman_id");

答案 1 :(得分:0)

发生错误是因为Laravel默认情况下会寻找salman_id(用于表salman)。

如果是,则可以如下指定自定义主键。

更改此行:

    return $this->belongsTo(salman::class);

收件人:

    return $this->belongsTo(salman::class, 'id', 'id');