在Eloquent(Laravel之外)对模型的基本误解

时间:2016-03-13 17:53:25

标签: php eloquent

因此,我一直在努力使用Slim Framework 2中的基本口才。这不是我第一个雄辩的问题,但是我希望这个问题能够得到解决,而不像我之前的问题:Using polymorphic relationships in Eloquent to extend model

我正在研究一个简单的化学数据库,用于跟踪我的大学。我有一个带有group_id列的Chemicals表,它与一个名为company的表相关,只有2列,id和company。 chemicals.company_id是引用company.id的外键。

(这个以及其他几个,如房间和位置,最初是作为Enums开始的,但很快就会发现用户需要能够添加它们。编辑DB列以添加枚举显然不是一个实用的想法。)

在化学中我有:

public function company()
{
    return $this->hasOne('Lab_Chemicals\Chemical\company');
}

在公司我有:

public function chemical()
{
    return $this->belongsTo('Lab_Chemicals\Chemical\chemical');
}

他们都在同一名称空间(Lab_Chemicals \ Chemical),而且他们自己可以做一个

$chemicals = $app->chemical->get();

$company = $app->company->get();

并获取正确的列表,以便基本看起来设置正确,但如果我尝试这样做:

$company = chemical::find(1)->company;

我得到了Slim Application Error:

类型:Illuminate \ Database \ QueryException 代码:42S22 消息:SQLSTATE [42S22]:找不到列:1054未知列' company.chemical_id'在' where子句' (SQL:从company中选择* companychemical_id = 1和companychemical_id不是空限制1)

这让我想到了真正的问题。这不是倒退吗?为什么要在公司寻找chemical_id?我知道这就是它在文档中所说的内容 https://laravel.com/docs/4.2/eloquent#relationships:"请注意,Eloquent根据模型名称假定关系的外键。在这种情况下,假设Phone模型使用user_id外键。"

我希望它能找到chemical.company_id = company.id的公司。我的思维方式存在哪些缺陷,我可以做些什么来使其按预期工作? 感谢

0 个答案:

没有答案