Запустите where () -> get () для полей действия Nova () - PullRequest
3 голосов
/ 11 июня 2019

Я пытаюсь предоставить список Select только записями, которые связаны с моделью через сводную таблицу.

При создании программного обеспечения для отслеживания времени / бюджетирования для клиента у меня есть две модели, которые яЯ работаю с бюджетами и проектами, которые объединены с помощью сводной таблицы.(То есть budgets, projects и budget_project)

Я пытаюсь отобразить все проекты, связанные с выбранным Budget (из ресурса Budget при вызове действия)на поле Select.Я не могу понять, как передать model->id в функцию поля.Затем я буду запускать некоторый код для анализа 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),
        ];
    }
}

1 Ответ

1 голос
/ 11 июня 2019
public function fields(Request $request)
{
    $budgetProject = BudgetProject::where('budget_id',$request->budget_id)->get();

    dd($budgetProject);

    foreach($budgetProject as $bp){
        $projectArray[$bp->project_id] = $bp->project->name;
    }

    return [
        Select::make('Project','project_id')->options($projectArray),
    ];
}
...