Maison > Questions et réponses > le corps du texte
Je souhaite retourner une liste de rendez-vous pour un utilisateur donné (la table des rendez-vous contient user_id
和 post_id
).
Le problème est que la collection retournée n'a reçu que le nom et le lieu du premier rendez-vous.
public function index() { // Retrieve all appointments from the user $appointments = Appointment::where('user_id', Auth::user()->id)->get(); // Retrieve all post IDs associated with the appointments $postIds = $appointments->pluck('post_id')->toArray(); // Retrieve all posts with the associated post IDs $posts = Post::whereIn('id', $postIds)->get()->keyBy('id'); // Assign post details to each appointment $appointments = $appointments->map(function ($appointment) use ($posts) { $postId = $appointment->post_id; if (isset($posts[$postId])) { $post = $posts[$postId]; $appointment->name = $post->name; $appointment->place = $post->place; } else { // For debugging purposes, log the missing post details Log::info("Post details not found for appointment: " . $appointment->id); } return $appointment; }); return $appointments; }
Les résultats que j'obtiens dans Postman sont les suivants :
[ { "id": 4, "user_id": 9, "post_id": 2, "date": "6/14/2023", "day": "Wednesday", "time": "12:00 PM", "status": "upcoming", "created_at": "2023-06-12T17:19:58.000000Z", "updated_at": "2023-06-12T17:19:58.000000Z", "name": "Biskra", "place": "Tolga" }, { "id": 5, "user_id": 9, "post_id": 9, "date": "6/24/2023", "day": "Saturday", "time": "14:00 PM", "status": "cancel", "created_at": "2023-06-12T18:53:45.000000Z", "updated_at": "2023-06-12T18:53:45.000000Z" }, { "id": 6, "user_id": 9, "post_id": 8, "date": "6/17/2023", "day": "Saturday", "time": "12:00 PM", "status": "complete", "created_at": "2023-06-13T01:43:14.000000Z", "updated_at": "2023-06-13T01:43:14.000000Z" } ]
Je souhaite obtenir la liste de rendez-vous de l'utilisateur et les informations pour chaque rendez-vous (date, heure, date, post_name, post_place)
P粉7187309562023-09-13 13:02:16
Le problème est de tenter de modifier le rendez-vous d'origine pour obtenir le résultat, veuillez vérifier votre code
// Assign post details to each appointment $appointments = $appointments->map(function ($appointment) use ($posts) { }
Les résultats doivent être placés dans différentes variables pour obtenir les bons résultats
// Assign post details to each appointment $allTheRecords = $appointments->map(function ($appointment) use ($posts) { $postId = $appointment->post_id; if (isset($posts[$postId])) { $post = $posts[$postId]; $appointment->name = $post->name; $appointment->place = $post->place; } else { // For debugging purposes, log the missing post details Log::info("Post details not found for appointment: " . $appointment->id); } return $appointment; }); return $allTheRecords;