2017-10-07 3 views
1

J'ai deux tables:Comment je renvoie le texte personnalisé dans la requête Laravel 5.2?

table qr_details:

id qrcode_id prize_id created_at   updated_at 
12 1   12   2017-10-06 19:53:10 0000-00-00 00:00:0 

QRCodes table:

id correspond_code qrcode_note created_at    updated_at 

1 plgt73g   X Batch  2017-10-06 21:55:11 2017-09-28 08:57:53 
2 gs35dn4   Y Batch  2017-10-06 21:55:22 2017-10-04 04:38:50 
3 df324f3   X Batch  2017-10-06 21:55:36 2017-10-06 13:29:11 

Maintenant, je veux si je reçois qrcodes tableau id dans qr_details tableau qrcode_id colonne puis il affichera le texte Yes autre que il montrera No. Comment j'écris ceci? Merci d'avance.

J'ai essayé jusqu'à présent:

$drawOr = DB::table('qr_details') 
     ->leftJoin('qrcodes', 'qr_details.qrcode_id', '=', 'qrcodes.id') 
     ->where('qrcode_id','=', $id) 
     ->get(); 
     dd($drawOr); 

ses affiche une erreur.

+0

obtenez-vous une erreur de contrainte d'intégrité? –

+0

pourquoi n'utilisez-vous pas une relation éloquente pour cela? –

+0

J'ai vraiment du mal à comprendre cette question. Probablement 'qr_details' est une table avec des détails sur une rangée de' qrcodes'? Comment le 'id 'ne serait-il pas là? – apokryfos

Répondre

1

Ceci est très simple. Vous pouvez utiliser ce code dans le contrôleur: -

$drawOr = DB::table('qrcodes') 
    ->get(); 

foreach($drawOr as $key => $draw){ 
    $getqrDeatilCount = DB::table('qr_details')->where('qrcode_id',$draw->id)->count(); 
    if($getqrDeatilCount > 0){ 
     $drawOr[$key]->status = "Yes"; 
    }else{ 
     $drawOr[$key]->status = "No"; 
    } 
} 
echo "<pre>"; print_r($drawOr); 

Maintenant, j'ai créé la nouvelle clé à savoir état qui contient la valeur « oui » ou non et après que vous pouvez utiliser dans le fichier de lame selon votre exigence Espérons que ça aide :)

+0

Oui, je suis à la recherche de ce genre de .. Merci:) –

+0

Votre accueil ... heureux d'aider :) – kunal

2

Utilisez DB::raw dans select() quelque chose comme

$drawOr = DB::table('qr_details') 
     ->select('qr_details.*', 
      DB::raw("(CASE WHEN qrcodes.id IS NOT NULL THEN 'Yes' ELSE 'No' END) AS somealias")) 
     ->leftJoin('qrcodes', 'qr_details.qrcode_id', '=', 'qrcodes.id') 
     ->where('qrcode_id','=', $id) 
     ->get(); 
+0

Je reçois cette erreur: https://prnt.sc/guc1gm –

+0

Je pense que c'est l'inverse. La table qrcodes est la table de base et la table 'qr_details' est la table connexe et OP veut voir si pour chaque' qrcode' il y a une entrée dans la table 'qr_details', la table – apokryfos

+0

' qr_details' n'a besoin d'aucune entrée. Il se remplira quand quelqu'un dessine le code qr de la table 'qrcodes'. –