Filament Relation Manager
I have created TopicResource and SubtopicResource and I have created SubtopicsRelationManager and it is working fine . I have also created QuestionsRelationManager. But when I hit on New Subtopic or Edit Subtopic button I get this error;
Filament\Support\Services\RelationshipJoiner::prepareQueryForNoConstraints(): Argument #1 ($relationship) must be of type Illuminate\Database\Eloquent\Relations\Relation, null given, called in C:\xampp\htdocs\rev-app\vendor\filament\forms\src\Components\Select.php on line 765
Kindly help so i may continue with my project
Here is the QuestionResource
`<?php
namespace App\Filament\Resources;
use App\Filament\Resources\QuestionResource\Pages; use App\Filament\Resources\QuestionResource\RelationManagers; use App\Models\Question; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope;
class QuestionResource extends Resource { protected static ?string $model = Question::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('text')
->maxLength(255),
Forms\Components\Select::make('subtopic_id')
->createOptionForm([
Forms\Components\TextInput::make('name')
->maxLength(255),
])
->relationship('subtopic','name')
->searchable()
->preload(),
Forms\Components\FileUpload::make('image')
->image()
->nullable()
->imageResizeMode('cover')
->imageCropAspectRatio('16:9')
->imageResizeTargetWidth('250')
->imageResizeTargetHeight('150')
->preserveFilenames(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
//
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getRelations(): array
{
return [
//
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListQuestions::route('/'),
'create' => Pages\CreateQuestion::route('/create'),
'edit' => Pages\EditQuestion::route('/{record}/edit'),
];
}
} `
Here is SubtopicResource: `<?php
namespace App\Filament\Resources;
use App\Filament\Resources\SubtopicResource\Pages; use App\Filament\Resources\SubtopicResource\RelationManagers; use App\Models\Subtopic; use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\Resource; use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope;
class SubtopicResource extends Resource { protected static ?string $model = Subtopic::class;
protected static ?string $navigationIcon = 'heroicon-o-rectangle-stack';
public static function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('name')
->maxLength(255),
Forms\Components\Select::make('topic_id')
->createOptionForm([
Forms\Components\TextInput::make('name')
->maxLength(255),
])
->relationship('topic','name')
->searchable()
->preload(),
]);
}
public static function table(Table $table): Table
{
return $table
->columns([
Tables\Columns\TextColumn::make('name')
->searchable(),
])
->filters([
//
])
->actions([
Tables\Actions\EditAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
public static function getRelations(): array
{
return [
RelationManagers\QuestionsRelationManager::class,
];
}
public static function getPages(): array
{
return [
'index' => Pages\ListSubtopics::route('/'),
'create' => Pages\CreateSubtopic::route('/create'),
'edit' => Pages\EditSubtopic::route('/{record}/edit'),
];
}
} `
Here is the QuestionRelationManager:
`<?php
namespace App\Filament\Resources\SubtopicResource\RelationManagers;
use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\RelationManagers\RelationManager; use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope;
class QuestionsRelationManager extends RelationManager { protected static string $relationship = 'questions';
public function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('text')
->required()
->maxLength(255),
]);
}
public function table(Table $table): Table
{
return $table
->recordTitleAttribute('text')
->columns([
Tables\Columns\TextColumn::make('text'),
])
->filters([
//
])
->headerActions([
Tables\Actions\CreateAction::make(),
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
}
Here is the SubtopicsRelationManager;<?php
namespace App\Filament\Resources\TopicResource\RelationManagers;
use Filament\Forms; use Filament\Forms\Form; use Filament\Resources\RelationManagers\RelationManager; use Filament\Tables; use Filament\Tables\Table; use Illuminate\Database\Eloquent\Builder; use Illuminate\Database\Eloquent\SoftDeletingScope;
class SubtopicsRelationManager extends RelationManager { protected static string $relationship = 'subtopics';
public function form(Form $form): Form
{
return $form
->schema([
Forms\Components\TextInput::make('name')
->required()
->maxLength(255),
]);
}
public function table(Table $table): Table
{
return $table
->recordTitleAttribute('name')
->columns([
Tables\Columns\TextColumn::make('name'),
])
->filters([
//
])
->headerActions([
Tables\Actions\CreateAction::make(),
])
->actions([
Tables\Actions\EditAction::make(),
Tables\Actions\DeleteAction::make(),
])
->bulkActions([
Tables\Actions\BulkActionGroup::make([
Tables\Actions\DeleteBulkAction::make(),
]),
]);
}
} ` ''
Please or to participate in this conversation.