Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Odległe ma wiele przez

Myślę, że w Laravelu nie ma takiej metody. Musisz stworzyć własne zapytanie. To zapytanie niestandardowe może być bardzo kosztowne, ponieważ zostanie wykonanych wiele zapytań. Zatem optymalnym rozwiązaniem według mnie jest powiązanie użytkownika i możliwości z kluczem obcym.

Jeśli jednak nie chcesz łączyć użytkownika i możliwości za pomocą klucza obcego, możesz utworzyć niestandardowe zapytanie, aby to obsłużyć. Po prostu dodaj relację „hasManyThrough” między modelem możliwości a klientem, na przykład

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

Następnie utwórz funkcję statyczną w modelu użytkownika.

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

Teraz możesz za jednym razem uzyskać dostęp do możliwości związanych z użytkownikiem, na przykład

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

Spowoduje to zwrócenie wszystkich możliwości wszystkich klientów związanych z Użytkownikiem o identyfikatorze „1”.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Wyzwalacze PHP MySQL - Jak przekazać zmienne do wyzwalacza?

  2. Nieprawidłowy format daty i godziny:1292 Nieprawidłowa wartość daty i godziny

  3. Wyszukiwanie według kryteriów w oparciu o TextField i menu listy

  4. mysql przekazuje dane do in

  5. PHP - Uwaga:Niezdefiniowany indeks: