Sta*_*lav 6 laravel eloquent laravel-5 laravel-5.2
如何建立有关系的口才模型?
我有:
人表
id
firstname
lastname
Run Code Online (Sandbox Code Playgroud)
员工表
id
person_id
position
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
Employee::create([
'firstname' => 'Jack',
'lastname' => 'London',
'position' => 'writer'
])
Run Code Online (Sandbox Code Playgroud)
我知道,可以创建两个模型,然后将它们关联。但是也许有办法使它更美丽吗?
首先,您必须在Person模型中创建关系
class Person extends Model
{
protected $fillable = ['firstname', 'lastname'];
public function employee()
{
return $this->hasOne('App\Employee');
}
}
Run Code Online (Sandbox Code Playgroud)
之后,您可以在控制器中执行以下操作:
$person = Person::create($personData);
$person->employee()->create($employeeData);
Run Code Online (Sandbox Code Playgroud)
正如@Alexey Mezenin提到的,您可以使用:
$person = Person::create(request()->all());
$person->employee()->create(request()->all());
Run Code Online (Sandbox Code Playgroud)
反之亦然:
class Employee extends Model
{
protected $fillable = ['position'];
public function person()
{
return $this->belongsTo('App\Person');
}
}
Run Code Online (Sandbox Code Playgroud)
您仍然需要首先创建人员,因此,如果您正在寻找可读性和大小合理的解决方案,则可以这样做:
$data = [
'firstname' => 'Jack',
'lastname' => 'London',
'position' => 'writer'
];
$person = Person::create($data);
$person->employee()->create($data);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
12169 次 |
| 最近记录: |