Laravel多态关系返回null



我正在尝试连接一个Order和两个不同的OrderDetailType表。

OrderDetailType1
- id
- order_id
OrderDetailType2
- id
- order_id
Order
- id
- detail_type    'type1' or 'type2'

我在Laravel官方网站上遵循了多态关系的例子,并适应了我的代码,比如:

class OrderDetailType1 extends Model {
public function order() {
return $this->morphOne('AppOrder', 'type_detail');
}
}
class OrderDetailType2 extends Model {
public function order() {
return $this->morphOne('AppOrder', 'type_detail');
}
}
class Order extends Model {
public function type_detail() {
return $this->morphTo();
}
}

并且我已经把Relation::morphMap()放到了AppServiceProvider类中的boot()函数中。

use IlluminateDatabaseEloquentRelationsRelation;
class AppServiceProvider extends ServiceProvider {
public function boot() {
Relation::morphMap([
'type1' => 'AppOrderDetailType1',
'type2' => 'AppOrderDetailType2'
]);
}
}

该示例与我的代码不同。区别在于外键和指定要联接的表应在Order中的属性。所以我不能像示例那样使用morphTo((和morphOne((来解决这个问题。

我不知道哪些类应该包含morphTo((和morphOne((。是否有任何重载来指定哪个表具有外键和类型?

我使用Laravel 5.4。提前谢谢。

_id列必须在Order表中:

OrderDetailType1
- id
OrderDetailType2
- id
Order
- id
- detail_type
- detail_id
class OrderDetailType1 extends Model {
public function order() {
return $this->morphOne('AppOrder', 'detail');
}
}
class OrderDetailType2 extends Model {
public function order() {
return $this->morphOne('AppOrder', 'detail');
}
}
class Order extends Model {
public function detail() {
return $this->morphTo();
}
}

相关内容

  • 没有找到相关文章

最新更新