gpt4 book ai didi

php - 无法理解 laravel Eloquent 模型

转载 作者:行者123 更新时间:2023-11-29 10:49:07 25 4
gpt4 key购买 nike

自从我使用 Laravel 编程以来已经有一段时间了,我对创建具有 2 个模型的外键链接所需的关系感到困惑。

我有一个数据库,其中有一个包含公司的表“company”,还有一个名为“projects”的表,其中包含项目。

因此,Projects 表包含一个名为“employercompany”的列,该列具有对公司表的外键约束。

我正在尝试使用

在 laravel 的项目页面中打印出公司名称
{{$project->employercompany->name}}

但不断收到“尝试获取非对象的属性

我的模型页面如下所示:

//公司

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Company extends Model
{
public function projects()
{
return $this->hasMany('App\Projects', 'employercompany', 'id');
}
}

//项目

namespace App;

use Illuminate\Database\Eloquent\Model;

class Projects extends Model
{
public function employercompany()
{
return $this->belongsTo('App\Company');
}
}

我知道这是一个简单的问题,但我就是无法理解它

*****编辑*****

我找到了解决方案。感谢 Radical 提供了一些见解。

我最终将雇主公司列更改为company_id,所有其他列也如此。

之后,我摆弄了我猜修复的问题,那就是我更改了数据库搜索查询

DB::table('projects')->get();

进入

Project::all();

不知道这是否是需要的改变,但感觉确实如此。

最佳答案

当像您一样定义 belongsTo 关系时,Laravel 将尝试根据类名“猜测”您正在使用的键。在本例中,它将在您的 Projects 模型中查找列 company_id,因为您的模型名为 Company

就像您对 Company 模型上的 projects() 方法所做的那样,您应该告诉 Laravel 您正在使用 employercompany 列引用 Company 模型:

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

更多信息请参见相关文档here .

此外,为了让事情变得更容易,可能值得尝试 - 如果可能 - 遵守 Laravel “期望”你的数据库列被调用的内容,这样类似的情况就会自动解决。

关于php - 无法理解 laravel Eloquent 模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/44066639/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com