関係を持つ雄弁なモデルを作成する方法?
私が持っています:
人物テーブル
id
firstname
lastname
従業員テーブル
id
person_id
position
私はこのようなことをしたいです:
Employee::create([
'firstname' => 'Jack',
'lastname' => 'London',
'position' => 'writer'
])
2つのモデルを作成して関連付けることができます。しかし、これをもっと美しくする方法はあるのでしょうか?
まず、Personモデルでリレーションを作成する必要があります
class Person extends Model
{
protected $fillable = ['firstname', 'lastname'];
public function employee()
{
return $this->hasOne('App\Employee');
}
}
その後、コントローラで次のことができます:
$person = Person::create($personData);
$person->employee()->create($employeeData);
@ Alexey Mezenin が言及しているように、使用できます:
$person = Person::create(request()->all());
$person->employee()->create(request()->all());
また、逆になります:
class Employee extends Model
{
protected $fillable = ['position'];
public function person()
{
return $this->belongsTo('App\Person');
}
}
あなたはまだ人を最初に作成する必要があるので、あなたが読み取り可能でサイズを変更する解決策を探しているなら、あなたはこれを行うことができます:
$data = [
'firstname' => 'Jack',
'lastname' => 'London',
'position' => 'writer'
];
$person = Person::create($data);
$person->employee()->create($data);