Mysql
 sql >> база данни >  >> RDS >> Mysql

Отдалечен HasManyThrough

Не мисля, че има такъв метод в Laravel. Трябва да създадете своята персонализирана заявка. Тази персонализирана заявка може да бъде много скъпа, тъй като ще бъдат изпълнени множество заявки. По този начин оптималното решение за това според мен е да се свърже потребителят и възможността с външен ключ.

Ако обаче не желаете да свързвате потребител и възможност с външен ключ, тогава можете да създадете персонализирана заявка, за да се справите с това. Просто добавете връзка "hasManyThrough" между модел на възможност и клиент като,

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

След това създайте статична функция в потребителския модел.

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

Сега можете да получите достъп до възможността, предоставена на потребител наведнъж, като,

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

Това ще върне всички възможности на всички клиенти, свързани с потребител с идентификатор '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. Вмъкване в select и актуализиране в една заявка

  2. Проблеми при свързване към mysql сървър:ГРЕШКА 2003 (HY000)

  3. Как да вмъкна изображения в blob в таблицата на mysql, използвайки само sql синтаксис (без PHP)?

  4. изберете 30 произволни реда, където сумата =x

  5. mysql:защо сравнението на "низ" с 0 дава истина?