Quelle est la méthode correcte pour obtenir le nombre de lignes dont la colonne spécifiée est une clé étrangère d'une autre table. Voici ce que je veux dire:Obtenir le nombre de lignes avec une jointure dans Laravel
J'ai 2 tables providers
et products
. La table de fournisseurs a la clé primaire provider_id
et la table products
a une référence de clé étrangère à provider_id
via une colonne nommée la même, provider_id
. Mon intention est de récupérer les détails de chaque fournisseur, y compris tous leurs produits, c'est-à-dire un total de toutes les instances où provider_id
dans la table products
correspondait providers_id
dans le tableau providers
.
Voici mon code:
$data = DB::table('providers')
->join('products', 'products.provider_id', '=', 'providers.provider_id')
->select(
'providers.provider_id AS id',
'providers.provider_name AS name',
DB::raw("count(products->where('products.provider_id','=','providers.provider_id')) AS total_products"),
'providers.claims AS claims',
'providers.settlements AS settlements')
->groupBy('provider')
->get();
Cela ne semble pas fonctionner comme je reçois l'erreur suivante:
Undefined property: Illuminate\Database\MySqlConnection::$id (View: /var/www/test/app/resources/views/agent/serviceproviders/index.blade.php)
Qu'est-ce que je fais mal?
Merci pour la correction @Oluwafemi Sule. –
probablement un conflit avec products.id et pourquoi donnez-vous même des alias comme vous ne les utilisez pas n'importe où? –
@AnarBayramov il n'y a pas de produits.id. L'aspect commun entre les deux tables est la clé primaire dans la table des providers qui est providers.provider_id (oui, j'ai nommé la colonne provider_id qui incrémente aussi automatiquement au lieu de l'id normal que les gens utilisent souvent). J'ai trouvé le problème et l'ai trié, je suis sur le point d'afficher le bon code. –