私は2つのテーブル、クライアント、プロジェクトを持ち、プロジェクトはクライアントに関連付けられています。クライアントとプロジェクトの両方がソフト削除を実装してアーカイブの理由で関係を維持します。つまり、クライアントを削除しても、依然としてクライアント情報が添付されます。Laravel 4:やわらかなソフト削除とリレーションシップ
私の問題は、クライアントを削除すると、参照がプロジェクトからアクセスできなくなり、例外がスローされることです。私がやりたいことは、クライアントをソフトに削除することですが、プロジェクトの関係からクライアントデータを保持します。次のように
マイブレード・コードは次のとおりです。
@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
ここ
ある移行:
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');
});
感謝します。
':: withTrashed()'を使ってみましたか? –
移行を表示できますか。どのように正確に削除しようとしていますか? – carousel
クライアントに関連するプロジェクトを表示しているときに、クライアントを削除(ソフト削除)しようとしていますが、クライアント名を保持しようとしています。 – Wally