sql >> Databáze >  >> RDS >> Mysql

Vzdálený HasManyThrough

Nemyslím si, že taková metoda v Laravelu existuje. Musíte vytvořit svůj vlastní dotaz. Tento vlastní dotaz může být velmi drahý, protože bude provedeno více dotazů. Optimálním řešením je tedy podle mého názoru spojit uživatele a příležitost s cizím klíčem.

Pokud si však nepřejete propojit uživatele a příležitost s cizím klíčem, můžete vytvořit vlastní dotaz, který to zpracuje. Jednoduše přidejte vztah „hasManyThrough“ mezi model Opportunity a Client, jako je

    <?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');
        }
    }

Poté vytvořte statickou funkci v uživatelském modelu.

    <?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;
        }
    }

Nyní můžete přistupovat k Příležitosti realizované uživateli najednou, například

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

Tím se vrátí všechny příležitosti všech klientů souvisejících s uživatelem s ID '1'.



  1. Jak vybrat první řádek v každé GROUP BY Group

  2. Jak funguje funkce RPAD() v MySQL

  3. Hromadné vkládání s textovým kvalifikátorem na SQL Server

  4. převést můj dotaz SQL na queryexpression nebo fetchxml v crm