0

当他编辑例如一篇文章并将其记忆到 Backpack-Laravel 的数据库中时,我必须传递用户的秘密author_id 。怎么能这样做?

我能够做到这一点,该值出现在$request数组中(我使用 dd($request) 知道这一点)但不存储在数据库中。

作者CrudController.php

public function update(UpdateArticleRequest $request)
{
    //dd($request); <-- author_id = Auth::id()
    return parent::updateCrud();
}

更新ArticleRequest.php

public function rules()
{

    $this->request->add(['author_id'=> Auth::id()]);
    return [
        'title' => 'required|min:5|max:255',
        'author_id' => 'numeric'
    ];
}
4

2 回答 2

3

100 次中有 99 次未存储该值是因为模型的$fillable属性中未提及该列。是这个吗?


旁注:像这样添加 author_id 是可行的,但是如果您将这种方法用于多个模型,我建议您为所有模型编写一次。我为此使用了一个特征。这样,每次创建条目时,都会保存作者,并且您拥有在一个地方获取它的所有方法,即 trait ( $this->creator(), this->updator)。

我的方法是这样的:

1) 我的数据库中有两个新列,created_by并且updated_by

2)我使用这样的特征:

<?php namespace App\Models\Traits;

use Illuminate\Database\Eloquent\Model;

trait CreatedByTrait {

    /**
     * Stores the user id at each create & update.
     */
    public function save(array $options = [])
    {

        if (\Auth::check())
        {
            if (!isset($this->created_by) || $this->created_by=='') {
                $this->created_by = \Auth::user()->id;
            }

            $this->updated_by = \Auth::user()->id;
        }

        parent::save();
    }


    /*
    |--------------------------------------------------------------------------
    | RELATIONS
    |--------------------------------------------------------------------------
    */

    public function creator()
    {
        return $this->belongsTo('App\User', 'created_by');
    }

    public function updator()
    {
        return $this->belongsTo('App\User', 'updated_by');
    }
}

3) 每当我希望模型具有此功能时,我只需要:

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Model;
use Backpack\CRUD\CrudTrait;

class Car extends Model
{
    use CrudTrait;
    use CreatedByTrait; // <---- add this line

希望能帮助到你。

于 2016-10-13T11:26:47.583 回答
0

我的背包设置中的更新函数在 updateCrud 函数中传递了 $request。您提到的那个没有将请求传递给父函数。

public function update(UpdateRequest $request)
{
    // your additional operations before save here
    $redirect_location = parent::updateCrud($request);
    return $redirect_location;
}
于 2018-06-06T06:05:07.547 回答