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
希望能帮助到你。