Laravel 存储方法

Spr*_*kas 4 php laravel eloquent

我想让 store eloquent 更加简化,如下所示:

$keyword = Keyword::create([
        'keyword'       => $request->input('keyword'),
        'micro_price'   => $request->input('micro_price'),
        'macro_price'   => $request->input('macro_price'),
        'cmd'           => $request->input('cmd'),
]);
Run Code Online (Sandbox Code Playgroud)

而不是这个:

    $keyword = new Keyword;
    $keyword->keyword = $request->input('keyword');
    $keyword->micro_price = $request->input('micro_price');
    $keyword->macro_price = $request->input('macro_price');
    $keyword->cmd = $request->input('cmd');
    $keyword->user()->associate(Auth::user());
    $keyword->server()->associate($request->input('title'));
    $keyword->save();
Run Code Online (Sandbox Code Playgroud)

但是我在带有2 个外键(和)的关键字数据库表中遇到一个问题,我希望我的雄辩模型正确分配这两个外键,但我不知道如何在简化版本中实现这一点。server_iduser_id

预先感谢您的帮助!

Ale*_*nin 5

使用批量分配功能和all()请求方法:

$keyword = Keyword::create($request->all());
Run Code Online (Sandbox Code Playgroud)

$fillable如果您在模型中定义属性,它将起作用Keyword

protected $fillable = ['keyword', 'cmd', 'micro_price', 'mini_price'];
Run Code Online (Sandbox Code Playgroud)

如果需要将一个关键字与两个模型关联,可以手动定义外键:

$data = $request->all();
$data['user_id'] = auth()->id();
$data['server_id'] => $request->title;
$keyword = Keyword::create($data);
Run Code Online (Sandbox Code Playgroud)

要将一个对象与一个模型关联起来,您可以使用关系:

auth()->user()->keywords()->create($request->all());
Run Code Online (Sandbox Code Playgroud)