我已经开始使用Voyager,而且我遇到了控制器的问题。
我在数据库中创建一个名为Progress的新表,默认情况下,voyager创建一个BREAD表单来浏览读取删除和添加项目。
我想在用户添加新项目时将默认值放入字段中。我想要的默认值是authentication user_id
我该怎么做?
感谢。
答案 0 :(得分:1)
你可以在旅行者之外完全做到这一点。
首先从添加表单中排除authentication_user_id
(在Voyager的数据库界面中)。如果该字段不采用空值,您可以设置一些临时默认值,或修改您的迁移 - 以最方便的为准。
接下来创建一个model observer,然后使用created()
功能。例如:
<?php
namespace App\Observers;
use App\Models\Project;
class ProgressObserver
{
/**
* Listen to the Progress created event.
*
* @param Progress $progress
* @return void
*/
public function created(Progress $progress)
{
$progress->authentication_user_id = WHATEVER_YOU_DO_HERE;
$progress->save();
}
}
答案 1 :(得分:0)
我认为你可以创建一个迁移来为该字段写一个默认值
答案 2 :(得分:0)
答案 3 :(得分:0)
您必须将以下代码添加到模式中,如下所示
//assign created_by loggedin user
public function __construct(array $attributes = [])
{
$this->creating([$this, 'onCreating']);
parent::__construct($attributes);
}
public function onCreating($row)
{
// Placeholder for catching any exceptions
if (!\Auth::user()->id) {
return false;
}
$row->setAttribute('created_by', \Auth::user()->id);
$row->setAttribute('assign_to', \Auth::user()->id);
}
我添加了这个因为我的项目需要这个。你也可以在onCreating()函数中添加你的字段。