如何使用Laravel查询生成器按字段值连接不同的表?
问题描述:
我有一个表格,其中包含下面的字段。我只是想通过类型字段值来连接表,例如,如果类型字段包含经验值,那么连接应该以经验表引用association_id字段,并且对于教育也是一样。如何使用Laravel查询生成器按字段值连接不同的表?
- id
- title
- association_id
- type (experience,education)
任何帮助将不胜感激。
答
您可以使用多态关系
主要型号:
class Association extends Model {
public function associable()
{
return $this->morphTo();
}
}
先进经验型号:
class Exprience extends Model {
public function associates()
{
return $this->morphMany(Association::class, 'associable');
}
}
教育模式:
class Education extends Model {
public function associates()
{
return $this->morphMany(Association::class, 'associable');
}
}
你也应该增加两个额外的外商投资企业LDS你的主模型表格:
associable_id - integer
associable_type - string
额外的信息:https://laravel.com/docs/5.4/eloquent-relationships#polymorphic-relations
+0
先生我正在使用查询生成器而不是雄辩,如果您可以发布关于查询生成器连接。 –
你只有两个'enum'型列类型?如果它可以使用sql来实现,那么在查询构建器中显然是可行的。 –
[有两种类型标志的表上的Laravel关系可能重复](https://stackoverflow.com/questions/35057540/laravel-relationships-on-a--a-table-with-two-types-of-flags) –
这不是一个重复的问题,因为我询问查询生成器不是用于雄辩 –