我有这个常规问题/问题作为laravel初学者
这是表结构的一个例子
parents
id - integer
name - string
therapists
id - integer
name- integer
kid
id - integer
name - string
parent_id - integer
therapist_id - integer
现在,父母和治疗师已经有很多孩子和孩子 孩子属于父母和治疗师
以下是模型示例:
class Parent extends Model {
public function kids()
{
return $this->HasMany('Kid');
}
}
class Therapist extends Model {
public function kids()
{
return $this->HasMany('Kid');
}
}
class Kid extends Model {
public function parents()
{
return $this->belongsTo('Parent');
}
public function therapists()
{
return $this->belongsTo('Therapist');
}
}
所以,现在我的问题.. 如何在数据库中保存新的Kid Model?
$parent = Parent::find(1);
$therapist = Therapist::find(1);
$kid = new Kid;
$kid->therapist_id = $therapist->id;
$parent->kids()->save($kid);
或者也许通过治疗师模型?
$therapist = Therapist::find(1);
$parent = Parent::find(1);
$kid = new Kid;
$kid->parent_id = $parent->id;
$therapist->kids()->save($kid);
或者还有其他约定,或者我没有做到这一点?
到目前为止,我可以看到,这与多态关系无关。
答案 0 :(得分:3)
这两项工作。我个人最喜欢这个:
$therapist = Therapist::find(1);
$parent = Parent::find(1);
$kid = new Kid;
$kid->parents()->associate($parent);
$kid->therapists()->associate($therapist);
$kid->save();
另外,我建议您将Kid
上的关系重命名为parent()
和therapist()
,因为它只能属于一个父母或治疗师。