laravel 5.4のソフト削除されたユーザーに関連する投稿を取得する方法はありますか?私は考えているので、ユーザーはデータベースにまだ道があるはずです。laravel 5.4のソフト削除されたユーザー投稿を取得します。5.4
答えて
レコードをソフト削除すると、データベースにはflagged
が削除されますが、レコードはそのまま残ります。
あなたはまだこのようにそれを取得することができます。
$users = App\User::withTrashed()->get();
これは動作するはずです、私は思います。
Post::whereHas('users', function ($q) {
$q->whereNotNull($q->getModel()->getQualifiedDeletedAtColumn());
})->get();
それは基本的にnot null
あるテーブルdeleted_at
列に入社するwhere句を追加しています。または、これはおそらく1本1本も動作します。
User::with('posts')->onlyTrashed()->get()->map->posts->collapse();
onlyTrashed
hereが記載されているようにSoftDeletes
形質に定義された方法です。 onlyTrashed
の横に「スコープの拡張子」があり、これはrestore
,withTrashed
,withoutTrashed
です。
私はわかりませんが、の後に->unique('id')
を追加すると良いと思います。
これは、OPにちょうど 'User :: withTrashed() - > whereId($ id) - > first();'が必要なときに、オーバーアロップされたものです。 – ceejayoz
@ceejayoz OP質問:**投稿**を取り出す方法はありますか?ソフト削除された**ユーザー**に関連しています。関係。 – Chay22
okしかし、今私は両方のユーザーと投稿を削除しようとすると、ユーザーだけでなく、投稿を削除します。パブリック関数destroy($ id) { $ admins =ユーザー:: findOrFail($ id); $ admins - > delete(); $ admins-> project() - > delete(); return redirect() - > back(); }このコードはlaracastで使用されているコードです。何らかの理由で、使用されたポストを取得していないが、ユーザーを取得して削除します。これは、FatalThrowableErrorがHomeController.php行70に表示されるエラーです。 nullのメンバー関数delete()を呼び出す – user3089096
私は、削除された投稿を復元して、自分のユーザーを削除したままにすることを好まなかったため、壊れた関係が返されます。
しかし、あなたはそれを復元し、あなたがそのように復元することができ、削除されたユーザーのIDを知りたい場合は:
Post::onlyTrashed()->where('user_id', $id)->restore();
繰り返しますが、私はそれをやっていないにをお勧めします。
- 1. AJAX投稿リクエストlaravel 5.4
- 2. laravelの投稿の自動削除日5.4
- 3. Laravel 5.4:ソフト削除されたレコードを再割り当てする
- 4. Laravel 5.4 AJAXフォームの投稿ルーティング404エラー
- 5. Laravel 5.4のテーブルチェックサムを取得
- 6. Laravel 5.4 - ユーザー
- 7. laravelのbootstrap modalの中にフォームを投稿する5.4
- 8. Laravel 5.4以上:ピボットテーブルへの投稿はありません
- 9. Laravel 5.4 Zizaco /委任 - ユーザーソフト削除
- 10. Laravel 5.4とoAuth2 - コントローラで認証されたクライアントを取得
- 11. Laravel 5.4のログイン時にセッションアイテムが削除される
- 12. Laravel 5.4 - Jquery Ajaxメソッド投稿がありません
- 13. はオンラインでLaravel 5.4を使用して値を取得できません5.4
- 14. ajax投稿でAuth :: id()サーバーサイドを取得するには? nullを返します。 Laravel 5.4
- 15. クッキー::リターンがnullの取得、laravel 5.4
- 16. Laravel 5.4ユーザーをログインできません
- 17. ..ユーザーの日付を作成し取得するトリング5.4
- 18. laravel 5.4ショー、編集、削除機能していません
- 19. laravel 5.4
- 20. Laravel 5.4
- 21. Laravel - ソフト削除されたデータを使った暗黙のルートモデルバインド
- 22. laravelでajaxを使用してフォーム投稿を送信する方法5.4
- 23. Laravel 5.4は - 私はそれに新しいですとlaravel 5.4にまだ
- 24. Laravel 5.4画像をアップロードしました
- 25. Laravel 5.4 - ピボットテーブルから特定のレコードを削除する
- 26. Laravel 5.4関連テーブルの行と行を削除する
- 27. laravelのリモートアクセス5.4
- 28. Laravelのカスタムヘルパークラス5.4
- 29. WordPress:1つの投稿が削除された後にすべての投稿を削除します。
- 30. Laravel 5.4:ストレージ/アプリケーションに保存されているファイルを削除する方法
通常、「ソフト削除」は、そのレコードでブールフラグ「削除済み」をtrueに設定することによって行われます。 Queriesは純粋なユーザー側のリストのために「削除済み」のものをスキップします。しかし、あなたが言ったように、彼らはまだそこに直接リンクまたは既存の投稿の名前を取得しています。私はlaravel 5.4の経験はありませんが、方法がないという技術的理由はありません。オーバーライド値またはデフォルト値の両方で簡単にこれを達成できます。オーバーライドにもっと賭けるでしょう(DBクエリのパフォーマンス上の理由)。 – Christopher
ユーザーをソフト削除すると、データベースにユーザーが残っていて(b)ルックアップされていて、b)その関係に何もしません。これらの投稿に何らかの方法でアクセスしようとしましたか?どのようなコードを使用していますか? – ceejayoz
はい、何らかの理由で私がソフトを削除すると、その投稿と一緒にユーザーが削除されます。毎回public function destroy($ id)に失敗します。 { $ admins = User :: findOrFail($ id); $ admins - > project() - > delete(); $ admins-> project() - > delete(); return redirect() - > back(); }これはdestroyメソッドです。imを使用していて、既に関係を設定しています。 – user3089096