2017-10-14 3 views
-1

Problème:Laravel recherche relation éloquente en utilisant enregistrement de la table enfant

Je veux seulement que les dossiers où les dossiers relationnels [user] non nul.

Dans mon cas Je veux seulement le premier enregistrement. où user est non nul

Résultat: enter image description here

Tableau utilisateur

  • id
  • Nom
  • email

Projet Tabel

  • id
  • titre
  • user_id [foreign key]

Mon code est comme ce

$projects = App\Project::with(['user' => function ($user) { 
        $user->where('name', '=', 'Ketan'); 
       }]) 
       ->get(); 

foreach ($projects as $project) { 
    echo $project->title.' - '.$project; 
} 

Mon résultat est comme ceci: enter image description here

+0

Avez-vous besoin d'obtenir un seul projet (n'importe quel projet) où l'utilisateur n'est pas «null»? –

+0

Oui, @AlexeyMezenin. Je veux un projet où l'utilisateur n'est pas nul. chaque fois que j'applique cette condition sur le résultat. je l'ai trouvé 6 résultats sur la 1ère page, 5 résultats sur la page 2, 8 résultats sur 3 page, ainsi de suite ..... donc, ** Je veux appliquer cette condition sur requête non sur les résultats. ** –

Répondre

-1

Vous pouvez essayer:

$projects = App\Project::with(['user' => function ($user) { 
        $user->where('name', '=', 'Ketan'); 
       }]) 
       ->get(); 

foreach ($projects as $project) { 
    if($project->user != null){ 
     echo $project->title.' - '.$project; 
    } 
} 
+0

Ce n'est pas une bonne solution. Il chargera tous les projets de la base de données, pour que vous puissiez ensuite faire une boucle et imprimer seulement ceux avec un utilisateur. – fubar

0

Je suis arrivé solution de ma question

$projects = App\Project::whereHas(['user' => function ($user) {   <--Change Here 
        $user->where('name', '=', 'Ketan'); 
       }]) 
       ->get(); 

Seulement Change 'avec' à 'whereHas'

Par cette solution, je a seulement les enregistrements de projet dans lequel l'utilisateur (enregistrement relationnel) n'est pas nul.