Как добавить элемент запроса в Backpack-Laravel?

Я должен передать секрет author_id пользователя, когда он редактирует, например, статью и запоминает ее в базе данных в Backpack-Laravel.
Как это сделать?

Я смог сделать это, значение появляется в $ запрос массив (я знаю dd ($ request), но не хранится в базе данных).

AuthorCrudController.php

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

UpdateArticleRequest.php

public function rules()
{

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

0

Решение

99 раз из 100, когда значение не сохраняется, это потому, что этот столбец не был упомянут в вашей модели $fillable имущество. Это оно?


Sidenote: Добавление author_id, как это работает, но если вы используете этот подход для нескольких моделей, я рекомендую кодировать его один раз для всех ваших моделей. Я использую черту для этого. Таким образом, каждый раз, когда создается запись, автор сохраняется, и у вас есть все способы получить ее в одном месте, черта ($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

Надеюсь, поможет.

3

Другие решения

Функция обновления в моей настройке рюкзака передала $ request в функцию updateCrud. Тот, который вы упомянули, не передает запрос в родительскую функцию.

public function update(UpdateRequest $request)
{
// your additional operations before save here
$redirect_location = parent::updateCrud($request);
return $redirect_location;
}
0