我试图提供一个Select
列表,其中仅包含通过数据透视表与该模型相关的记录。
在为客户构建时间跟踪器/预算软件时,我有两个正在使用的模型称为预算和项目,这些模型与数据透视表结合在一起。 (因此budgets
,projects
和budget_project
)
我试图在Budget
字段上显示与选定的Budget
相关的所有项目(调用操作时来自Select
资源)。我不知道如何将model->id
传递到fields函数中。然后,我将运行一些代码来分析与给定Projects
关联的Budget
,并创建一堆跨越日期范围和其他关系的记录。
请帮助!
我正在寻找这样的东西...
class CreateSchedule extends Action
{
use InteractsWithQueue, Queueable, SerializesModels;
/**
* Perform the action on the given models.
*
* @param \Laravel\Nova\Fields\ActionFields $fields
* @param \Illuminate\Support\Collection $models
* @return mixed
*/
public function handle(ActionFields $fields, Collection $models)
{
return Action::message('all good');
}
/**
* Get the fields available on the action.
*
* @return array
*/
public function fields()
{
$budgetProject = BudgetProject::where('budget_id',$this->id)->get();
foreach($budgetProject as $bp){
$projectArray[$bp->project_id] = $bp->project->name;
}
return [
Select::make('Project','project_id')->options($projectArray),
];
}
}
答案 0 :(得分:2)
对我来说,它像这样
在Resource类中传递ID
(new LogsDiffAction($this->id))
在Action类中创建一个构造函数以接收此参数
protected $model;
public function __construct($model)
{
$this->model = $model;
}
在您可以执行的字段中
if ($this->model) {
$entity = Activity::find($this->model);
$model = json_decode($entity->properties, true);
$partial = view('admin.nova.log-diff-partial', ['model' => $model])->toHtml();
return [
Heading::make($partial)->asHtml(),
];
}
答案 1 :(得分:1)
sudo apt-get --only-upgrade install odoo
答案 2 :(得分:0)
当我在拥有 Template
和 Campaign
模型的时事通讯部分工作时,我遇到了类似的问题
如果你想获得记录的数据,你可以通过这样做来添加你的模型 注意 onlyOneTabeRow 函数是一个内联动作,必须传递模型
public function actions(Request $request)
{
return [
(new CreateCampaign($this))
->onlyOnTableRow()
];
}
现在您可以在 CreateCampaign 行动承包商中接收它们
public function __construct($model)
{
$this->template = $model;
}
无需向数据库发出任何请求,您就可以像这样获取当前记录数据
public function fields()
{
return [
Text::make('Name', 'name')
->default(function ($request) {
return $this->template->name;
})
->rules('required'),
Text::make('Subject', 'subject')
->default(function ($request) {
return $this->template->subject;
})->rules('required'),
Textarea::make('Content', 'content')
->default(function ($request) {
return $this->template->content;
})->rules('required')->showOnIndex(),
Hidden::make('Template Id', 'template_id')
->default(function ($request) {
return $this->template->id;
})
];
}
这是我点击第一条记录中的内联操作 Create Campaign
后我想要的照片,我得到一个表单,其中包含我想在操作表单中显示的特定记录