How to Use ->relationship() with $get() in $form?

I'm working on a Filament form where gst_customer_name should be saved in the guest_customers table when the user enters a name that doesn't match an existing customer. ~ TextInput::make('customer_name')
->afterStateUpdated(function ($state, callable $set) { $customer = \App\Models\Customer::where('customer_name', 'like', '%' . $state . '%')->first(); if ($customer) { $set('customer_id', $customer->id); $set('gst_customer_name', null); $set('gst_tmp_name', null); } else { $set('customer_id', null); $set('guestCustomer.gst_customer_name', $state); $set('gst_tmp_name', $state); } }) Hidden::make('customer_id'), TextInput::make('gst_tmp_name'), Fieldset::make()->relationship('guestCustomer') ->schema([ TextInput::make('gst_customer_name') ->default(function($state, $set, $get){ // dd($state); $set('gst_customer_name', $get('../../gst_tmp_name')); $set('gst_customer_name', $state); }), TextInput::make('guestCustomer.gst_customer_name') ->default(function($state, $set, $get){ // dd($state); $set('gst_customer_name', $get('gst_tmp_name')); $set('gst_customer_name', $state); }), ]), ~
3 Replies
toeknee
toeknee4d ago
You need to enable live() but also set it be onBlur Id say. Or just it afterCreate and assign it?
syed_eer
syed_eerOP4d ago
thanks @toeknee for your reply. I use this ->relationship('guestCustomer', condition: fn ($get) => !empty($get('guestCustomer.gst_customer_name'))) and it works. I will appriciate if you could give some insight on this query inside ->searcheable() ->searchable(query: function (Builder $query, string $search): Builder { return $query->leftJoin('vehicles', function($join) { $join->on('vehicles.id', '=', 'quotations.vehicle_id') ->whereColumn('vehicles.customer_id', '=', 'quotations.customer_id'); }) ->leftJoin('guest_customers', 'guest_customers.id', '=', 'quotations.guest_customer_id') ->select('quotations.*', 'vehicles.plate_no as vehicle_plate', 'guest_customers.gst_plate_no as guest_plate') ->where('vehicles.plate_no', 'like', "%{$search}%") ->orWhere('guest_customers.gst_plate_no', 'like', "%{$search}%"); }) but it gives error
toeknee
toeknee4d ago
What’s the error?

Did you find this page helpful?