Company :: find(1)->部门因关系问题而返回null

时间:2019-04-29 00:23:20

标签: laravel eloquent

我正在制作一些具有一对多关系的表,我也具有一对一关系,但是如果我解决了为什么它不起作用的话,也许我也可以一对一地解决。 我将提供一些代码供您查看。

当我进入修补程序并键入“ Company :: find(1)-> deparments”时,它返回null。当我检查数据库时,外键已正确添加。 我还在模型中设置了主键。

公司表

 public function up()
    {
        Schema::create('companies', function (Blueprint $table) {
            $table->bigIncrements('company_id');
            $table->string('phone');
            $table->string('company_name',100);
            $table->timestamps();
        });
    }

部门表

  public function up()
    {
        Schema::create('departments', function (Blueprint $table) {
            $table->bigIncrements('department_id');
            $table->unsignedBigInteger('company_id');
            $table->foreign('company_id')->references('company_id')->on('companies')->onDelete('cascade');
            $table->string('department_name',100);
            $table->timestamps();
        });
    }

公司型号

  protected $primaryKey = 'company_id';

    Protected $table='companies';
    Protected $fillable=['phone','company_name'];

    public function users()
    {
        return $this->hasMany(User::class,'user_id');
    }

部门模型


 protected $primaryKey = 'department_id';

    protected $table = 'departments';
    protected $fillable = ['department_name'];
    public function company()
    {
        return $this->belongsTo(Company::class,'company_id');
    }
    public function users()
    {
        return $this->hasMany(User::class,'department_id');
    }

2 个答案:

答案 0 :(得分:1)

您错过了“公司模型”中的部门关系才能调用此命令。

public function departments()
{
    return $this->hasMany(Department::class,'department_id');
}

答案 1 :(得分:0)

我认为建立关系后应该是这样,

Company::with(['deparments'])->findOrFail(1);

希望这会有所帮助:)