Closed simonedelmann closed 5 years ago
I think it's possible to execute an action on a relation resource. Create a hasMany field for Project -> Members and then if you go to show Project, you should see a list of Members. If you have a Member Excel action, then it should be there to execute.
@patrickbrouwers Thank you! Yes, this is exactly how I'm doing that. I'm sorry, I wasn't clear. For better user experience I would like to skip the select-all step. Let me explain a little more:
If I'm managing a project I (almost always) want to have a list of all active members. I've created a filter for that. So now I have to do lots of things to get the list:
What I would prefer:
I'm sorry for the ugly English, I'm not a native speaker. I hope, it gets clear now, what I want to do.
Thank you very much for your help!
@simonedelmann the "select-all" step is a Nova thing, so we can't really do a lot about that. Currently Nova only allows us to run actions on selected rows.
OK. :( Anyway thank you very much!
Similar question here (and staying in Simons example): when I use an excel export action on members via the the detail view of projects (members as relation resource on a HasMany-Field), the export ignores all selections and filters I apply to the relation resources before. No matter how many members I select for my export, I always get all related members in my excel file. However, if I run this action on the index view of members it works just fine and respects my selections for the export. Any idea what's going on here, @patrickbrouwers ? I use the WithMapping concern btw. Many thanks!
I think it's easier to just call Laravel Excel directly in a Nova action in those cases.
I faced the same issue, and I found a way around this. By implementing FromQuery in your action as well, and passing the resource variable to the action you can create a custom query. My result looks something like this:
`class ExportUsers extends DownloadExcel implements FromQuery, WithMapping, WithHeadings { public $onlyOnDetail = true;
public function __construct(Request $request)
{
$this->project_id = $request->get('resources');
}
public function query()
{
return Users::where('project_id', $this->project_id);
}
public function map($product): array
{
return [
$user->name,
$user->project->name
];
}
}`
Assuming that there is 1 project with many users.
Prerequisites
Versions
Description
Actually this is no issue but a question. I have two models: Projects, Members. Each project has many members.
What I want to do? I want to export a list (xlsx) of all members for one project. I've created a Member's action. Then I have to select all members and run my action.
What I want to do instead? I want to run an action on a single project, getting all members. It this possible?
If this is the wrong place for questions like this, I apologize. Thank you for your help!