Laravel 5 根据多态关系中的模型类型获取所有记录
我有3个模型和相关表格:公司、销售公司、合伙公司 在公司表中,我想存储公司的一般信息,如名称、银行账户、ID和类似的信息。在另外两个表中,我将根据公司类型(销售公司或合作伙伴公司)存储不同的信息 由于这种逻辑,我需要在这些表之间建立一个多态的一对一关系 在我的公司表中,我有两列:Laravel 5 根据多态关系中的模型类型获取所有记录,laravel-5,eloquent,polymorphic-relationship,Laravel 5,Eloquent,Polymorphic Relationship,我有3个模型和相关表格:公司、销售公司、合伙公司 在公司表中,我想存储公司的一般信息,如名称、银行账户、ID和类似的信息。在另外两个表中,我将根据公司类型(销售公司或合作伙伴公司)存储不同的信息 由于这种逻辑,我需要在这些表之间建立一个多态的一对一关系 在我的公司表中,我有两列:firmable\u id和firmable\u type 公司模式与销售公司/合伙公司模式之间的关系如下: class Firm extends Model { public function firm
firmable\u id
和firmable\u type
公司模式与销售公司/合伙公司模式之间的关系如下:
class Firm extends Model {
public function firmable()
{
return $this->morphTo();
}
}
我的问题是:如何根据
firmable\u type
获取所有记录,因此基于型号名称?我是否可以使用关系来执行此操作,或者我是否需要执行以下操作:Firm::where('firmable_type','path\to\PartnerFirm')->get()
?您可以尝试此操作来检索所有变形模型,如下所示
您可以尝试如下检索所有变形模型 试试这个:
$firms = Firm::whereHasMorph('firmable', [PartnerFirm::class])->get();
这将输出如下查询:
=>“从公司
所在地选择*(可确定的公司类型
=?和存在(从合作伙伴公司
公司所在地可确定的公司id
=合作伙伴公司
id))
而公司
已删除
处的\u为空”
它的工作方式也应该是:
$firms = Firm::whereHasMorph('firmable','App\PartnerFirm')->get();
它将执行相同的查询:
=>“从公司
所在地选择*(可确定的公司类型
=?和存在(从合作伙伴公司
公司所在地可确定的公司id
=合作伙伴公司
id))
而公司
已删除
处的\u为空”
在报告的错误中:
找不到列:1054未知列在where子句中“has_morph”
似乎正在将方法whereHasMorph()
视为where()
的糖化版本(where('has_morph','…'))
)尝试以下方法:
$firms = Firm::whereHasMorph('firmable', [PartnerFirm::class])->get();
这将输出如下查询:
=>“从公司
所在地选择*(可确定的公司类型
=?和存在(从合作伙伴公司
公司所在地可确定的公司id
=合作伙伴公司
id))
而公司
已删除
处的\u为空”
它的工作方式也应该是:
$firms = Firm::whereHasMorph('firmable','App\PartnerFirm')->get();
它将执行相同的查询:
=>“从公司
所在地选择*(可确定的公司类型
=?和存在(从合作伙伴公司
公司所在地可确定的公司id
=合作伙伴公司
id))
而公司
已删除
处的\u为空”
在报告的错误中:
找不到列:1054未知列在where子句中“has_morph”
似乎正在将方法
whereHasMorph()
视为where()
的糖化版本(where('has_morph','…'))
)这将引发此错误:“未找到列:1054未知列在'where子句'中'has_morph'。这将引发此错误:“找不到列:1054未知列‘where子句’中的‘has_morph’”