Hey i need your help. I want to add a report that after creation will directly get the status, category and edit category with ID 1. However, I can't get it to work. The report has the relationships to each status, category and editor category.
When I create a report, how can I give it default values for its relationship?
Report Model:
class Report extends Model
{
use HasFactory;
protected $fillable = [
"kategorie_id",
"absender_name",
"absender_persoid",
"absender_mail",
"absender_handynummer",
"anhang_url",
"inhalt",
"bearbeiterkategorie_id",
"bearbeiter_name",
"bearbeiter_notiz",
"status_id"
];
public function status() {
return $this->hasOne(Status::class, "id");
}
public function kategorie() {
return $this->hasOne(Kategorie::class, "id");
}
public function bearbeiterkategorie() {
return $this->hasOne(Bearbeiterkategorie::class, "id");
}
}
Editorcategory Model:
class Bearbeiterkategorie extends Model
{
use HasFactory;
protected $fillable = [
"name",
"beschreibung"
];
public function report() {
return $this->belongsTo(Report::class);
}
}
Status Model:
class Status extends Model
{
use HasFactory;
protected $fillable = [
"name",
"beschreibung",
"badgefarbe"
];
public function report() {
return $this->belongsTo(Report::class);
}
}
Category Model:
class Kategorie extends Model
{
use HasFactory;
protected $fillable = [
"name",
"beschreibung"
];
public function report() {
return $this->belongsTo(Report::class);
}
}
Reportcontroller@store
public function store(Request $request)
{
$this->validate($request, [
"absender_name" => "required",
"absender_persoid" => "required|integer|min:1",
"absender_mail" => "required",
"absender_handynummer" => "required|numeric",
"kategorie_id" => "required|exists:kategories,id",
"inhalt" => "required",
"anhang_url" => "nullable|active_url"
]);
Report::create([
"kategorie_id" => $request->kategorie_id,
"absender_persoid" => $request->absender_persoid,
"absender_name" => $request->absender_name,
"absender_mail" => $request->absender_mail,
"absender_handynummer" => $request->absender_handynummer,
"anhang_url" => $request->anhang_url,
"inhalt" => $request->inhalt
]);
return back()->with("success", "Ihre Meldung wurde erfolgreich an das Los Santos Police Department eingereicht.");
}
Reports-Migration
public function up()
{
Schema::create('reports', function (Blueprint $table) {
$table->id();
$table->foreignId("kategorie_id")->constrained();
$table->string("absender_persoid");
$table->string("absender_name");
$table->string("absender_mail");
$table->string("absender_handynummer");
$table->string("anhang_url")->default(" ");
$table->longText("inhalt");
$table->foreignId("bearbeiterkategorie_id")->constrained();
$table->string("bearbeiter_name")->default("Kein Bearbeiter");
$table->longText("bearbeiter_notiz")->default("");
$table->foreignId("status_id")->constrained();
$table->timestamps();
});
}