Ich habe 2 Tabellen, Clients und Projekte und ein Projekt ist mit einem Client verbunden. Sowohl die Clients als auch die Projekte implementieren weiche Löschvorgänge, um die Beziehungen aus Archivierungsgründen aufrechtzuerhalten, d. H. Selbst wenn ich einen Client lösche, weist das Projekt immer noch die Client-Information auf.Laravel 4: Eloquent Soft löscht und Beziehungen
Mein Problem ist, dass wenn ich den Client lösche, die Referenz aus dem Projekt nicht mehr zugänglich ist und eine Ausnahme auslöst. Ich möchte den Client sanft löschen, aber die Client-Daten aus der Projektbeziehung beibehalten.
Mein Klinge Code ist wie folgt:
@if ($projects->count())
<table class="table table-striped table-bordered">
<thead>
<tr>
<th>Name</th>
<th>Client</th>
</tr>
</thead>
<tbody>
@foreach ($projects as $project)
<tr>
<td>{{{ $project->name }}}</td>
<td>{{{ $project->client->name }}}</td>
<td>{{ link_to_route('projects.edit', 'Edit', array($project->id), array('class' => 'btn btn-info')) }}</td>
<td>
{{ Form::open(array('method' => 'DELETE', 'route' => array('projects.destroy', $project->id))) }}
{{ Form::submit('Delete', array('class' => 'btn btn-danger')) }}
{{ Form::close() }}
</td>
</tr>
@endforeach
</tbody>
</table> @else There are no projects @endif
Hier sind die Migrationen:
Schema::create('clients', function(Blueprint $table) {
// Table engine
$table->engine = 'InnoDB';
// Increments
$table->increments('id');
// Relationships
// Fields
$table->string('name');
// Timestamps
$table->timestamps();
// Soft deletes
$table->softDeletes();
});
Schema::create('projects', function(Blueprint $table) {
// Table engine
$table->engine = 'InnoDB';
// Increments
$table->increments('id');
// Relationships
$table->integer ('client_id');
// Fields
$table->string('name');
// Timestamps
$table->timestamps();
// Soft deletes
$table->softDeletes();
// Indexes
$table->index('client_id');
});
Vielen Dank.
Haben Sie versucht mit ':: withTrashed()'? –
Können Sie Migrationen anzeigen? Wie und was genau willst du löschen? – carousel
Ich versuche, den Client zu löschen (soft delete), behalte aber den Clientnamen beim Anzeigen des Projekts, das mit dem Client verwandt war. – Wally