如何用人际关系建立Eloquent 的模型?

I have:

Person table

id
firstname
lastname

Employee table

id
person_id
position

我想做这样的事情:

Employee::create([
'firstname' => 'Jack',
'lastname' => 'London',
'position' => 'writer'
])

我知道,这可以创建两个模型,然后将它们关联起来.但也许有一种方法能让这更美?

推荐答案

First, you have to create relation in your Person model

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());

Also inverse would be:

class Employee extends Model
{
    protected $fillable = ['position'];

    public function person()
    {
        return $this->belongsTo('App\Person');
    }
}

Laravel相关问答推荐

用Laravel Filament创建变形组件

Laravel 在维护模式下显示自定义消息

如何通过一个 laravel 安装处理子域

Laravel 5文件夹 struct 中的文件保存在哪里?

转储或 dd laravel 在结果前添加字符时出错

Laravel:如何在没有数据库的情况下对用户进行身份验证

Laravel Blade 没有额外的空格?

SQLSTATE [42000]:语法错误或访问冲突:1066 Not unique table/alias on relationship

用于集合的 Laravel 5.5 API 资源

加载模型的所有关系

调用未定义的方法 Illuminate\Foundation\Application::bindShared()

如何在 Laravel 5 中按键获取所有缓存项目的列表?

如何仅在Blade模板存在时才包含它?

如何处理 php (Laravel api) 和 javascript (AngularJS) 之间的日期时间

Laravel 更新语法 - 使用数组更新记录

为什么 BroadCastEvent 在 Laravel 中排队?如何阻止它?

Grammar::parameterize() 必须是数组类型

在 Laravel 4 中使用 HTML 占位符

如何获取 Laravel 块的返回值?

Laravel Mix:更新 Node.js 依赖项