sql >> Databasteknik >  >> RDS >> Mysql

Distant HasManyThrough

Jag tror inte att det finns en sådan metod i Laravel. Du måste skapa din anpassade fråga. Den här anpassade frågan kan vara mycket dyr eftersom flera frågor kommer att utföras. Därför är den optimala lösningen för detta, enligt mig, att relatera Användare och Möjlighet med en främmande nyckel.

Men om du inte vill länka User och Opportunity med en främmande nyckel, kan du skapa en anpassad fråga för att hantera detta. Lägg bara till en "hasManyThrough"-relation mellan Opportunity och Client modell som,

    <?php
    class Client extends Eloquent{
        public function store(){
            return $this->hasMany('Store');
        }
        public function user(){
            return $this->belongsTo('User');
        }

        public function opportunity(){
            return $this->hasManyThrough('Opportunity', 'Store');
        }
    }

Skapa sedan en statisk funktion i Användarmodell.

    <?php

    class User extends Eloquent implements UserInterface, RemindableInterface {

        use UserTrait, RemindableTrait;

        public function client(){
            return $this->hasMany('Client');
        }
        public function store(){
            return $this->hasManyThrough('Store', 'Client');
        }

        public static function getOpportunityOfUser($userId)
        {
             $clients = User::find($userId)->client;

            foreach ($clients as $client) {
                $opportunities[] = Client::find($client->id)->opportunity;
            }

            return $opportunities;
        }
    }

Nu kan du få åtkomst till möjligheten för en användare på en gång som,

    Route::get('/', function()
    {   
         return $usersOpportunities = User::getOpportunityOfUser(1);
    });

Detta kommer att returnera alla möjligheter för alla klienter relaterade till Användare med id '1'.



  1. MySQL MOD() Funktion – Utför en Modulo Operation i MySQL

  2. Hur man installerar MySQL Workbench på Windows

  3. MySQL FULLTEXT-sökning

  4. Skapa en Schema Bound View i SQL Server