2017-08-16 3 views
0

J'ai trois Table comme structure ci-dessous.Laravel vérifier plus d'un paramètre sur eloquant-relation

Table- AccountService

id | service_id| account_id| 
---------------------------- 
1 | 1   | 8181  | 
2 | 2   | 8181  | 
3 | 3   | 8181  | 
4 | 5   | 8181  | 

Tableau: - Services

id | Name | 
------------ 
1 | A  | 
2 | B  | 
3 | C  | 
4 | D  | 

Tableau: - CompletedService

id | service_id | account_id 
------------------------------ 
1 | 1   | 8181 
2 | 1   | 8182 
3 | 1   | 8181 
4 | 2   | 8181 

Maintenant, ma relation avec la requête est ci-dessous.

$acc = AccountService::with(['service' => function($q) { 

        }])->with(['completedServiceRest' => function($q) { 

        }])->where('account_id', $account_id)->get(); 

Comment puis-je obtenir des enregistrements en partie des relations sur la base de account_id et service_id les deux. Actuellement les enregistrements sont affichés en relation de completedSericeRest ont tous les enregistrements qui account_id correspond à la table AccountService. Lorsque cette relation se produit, vérifiez à la fois service_id et account_id du service achevé et non seulement account_id.

Ci-dessous la parenté dans le modèle.

public function completedServiceRest() { 
    return $this->hasMany('App\CompletedService', 'account_id', 'account_id'); 
} 

enter image description here

vous recevez actuellement tous les enregistrements du account_id correspondent pas sur la base des deux service_id paramètres et ACCOUNT_ID affectent seulement account_id.

Merci à l'avance.

Répondre

0

Il serait plus facile avec une autre structure, un exemple de votre table "compte de service" (bien sûr, complété sera de 0 par défaut):

id | service_id | account_id | completed | 
------------------------------------------ 
1 |  1  | 8181 |  0  | 
2 |  2  | 8181 |  1  | 

Votre relation principale serait:

public function accountedServices() 
{ 
    return $this->hasMany('App\AccountService', 'account_id', 'account_id'); 
} 

Et pour vérifier ses services remplis:

public function completedServiceRest() 
{ 
    return $services->accountedServices()->where('completed', 1)->get(); 
} 
+0

non, je ne peux pas modifier ma structure de la table, car il y a beaucoup d'ot son domaine y est non seulement complété ou non par 0,1. donc ça ne marchera pas. TX –