Comment écrire une jointure interne dans Éloquent ORM dans laravel?
J'ai une table nommé buildings
et flats
table bâtiments
Building_Id | Building_Name | .......| Building_Owned_By | ....
appartements table
Flat_Id | Flat_Name | ........| Fk_Building_Id | .....
et dans Mes Modèles
Bâtiment
class Building extends Eloquent {
protected $primaryKey = "Building_Id";
protected $table = 'buildings';
.......
.......
public function flat()
{
return $this->hasMany('Flat', 'Fk_Building_Id', 'Building_Id');
}
}
Plat
class Flat extends Eloquent {
protected $primaryKey = "Flat_Id";
protected $table = 'flats';
.......
.......
public function building() {
return $this->belongsTo('Building','Fk_Building_Id', 'Building_Id');
}
}
et dans mon contrôleur
$flats = Flat::where('Fk_Building_Id', '=',$buildingid)
->where('Building_Owned_By', '=',Auth::user()->Login_Id)
->orderBy('Flat_Name')
->get(array('Flat_Id as flatId', 'Flat_Name as flatName'))
->toArray();
Mais elle ne retourne rien.
Comment peut-on effectuer des jointures internes dans Éloquent Orm (je ne veux pas utiliser couramment requête)?
Mise à jour
Merci pour @Créateur pour son temps précieux et de l'aide. Il m'aide beaucoup pour trouver ce. La solution est à nous d'utiliser whereHas et nous réécrire le code comme
$flats = Flat::whereHas('building', function($q){
$q->where('Building_Owned_By', '=',Auth::user()->Login_Id);
})
->where('Fk_Building_Id', '=',$buildingid)
->orderBy('Flat_Name')
->get(array('Flat_Id as flatId', 'Flat_Name as flatName'))
->toArray();
OriginalL'auteur manuthalasseril | 2014-02-20
Vous devez vous connecter pour publier un commentaire.
Ce faire :
}
Requête pour obtenir la construction avec tous les bémols:
Requête pour obtenir plat avec la construction d'info
Vérifier la réponse? plat a un droit de construction?
chaque appartement ont un buildingId et aussi peut-être de deux appartements ont même buildingID peut se produit . Je veux dire chaque bâtiment contient pas de flats
Yup. cela signifie un plat ne peut avoir qu'un seul bâtiment. Donc hasOne devrait fonctionner. Avez-vous essayé le code ci-dessus?
c'est bien l'homme! Profitez de laravel!! Toujours faire les choses étape par étape, afin d'éviter toute erreur. c'est la clé du code. cheers
OriginalL'auteur Anil Sharma
Essayez ceci:
OriginalL'auteur Shahid Ahmad