【发布时间】:2018-10-07 10:25:35
【问题描述】:
我想在服务和不同类型的服务数据之间建立多态关系(在这个例子中是它的typo3_data)。
我有以下数据模型:
projects
--------
id
name
services
--------
id
type
project_id
data_type
data_id
typo3_data
--------
id
url
项目和服务具有简单的 OneToMany 关系。但服务模型需要多态关系,因为不同类型的服务需要各自表中的不同列。
我的服务模型如下所示:
class Service extends Model
{
public function project()
{
return $this->belongsTo(Project::class);
}
public function data()
{
return $this->morphTo('data');
}
}
TYPO3Data 模型如下所示:
class TYPO3Data extends Model
{
protected $table = 'typo3_data';
public function service()
{
return $this->morphOne(Service::class, 'data');
}
}
目前我尝试以这种方式(简化)将数据保存在服务上:
public function store(Project $project)
{
$service = new Service(['type' => 'TYPO3']);
$service->data()->save(new TYPO3Data(['url' => 'http://example.com']));
$project->services()->save($service);
}
但现在我收到了一个错误,即 services.data_type 上的 NOT NULL 约束。
有人知道如何解决这部分,我可以保存多态关系吗?
提前致谢
【问题讨论】:
标签: php laravel eloquent polymorphic-associations