php - 无法理解 laravel Eloquent 模型

标签 php mysql laravel eloquent

自从我使用 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/

相关文章:

php - 如何在 PHP 中连接 SQL 查询和基本身份验证

mysql - mysql 触发器有问题

php - 为什么使用我的主键 'code_giac' 来更新我的字段?

php - 我在哪里可以找到 symfony 1.4 的深入教程?

php - 在前端获取 Magento 类别属性

php - 如何通过 jQuery 在页面刷新时保留 <li> 标记的选定值

MySQL 工作台 6.3 : how should I insert a new column into a specific position (in the middle of the table)

php - Codeigniter Undefined Property,或者我的 Controller 如何停止担心并学会喜欢这个模型

laravel - 当时区与 UTC 不同时如何存储日期时间(Laravel)

javascript - 从 <a> 标签内的按钮调用路由 laravel