Mysql
 sql >> Teknologi Basis Data >  >> RDS >> Mysql

Jauh Memiliki Banyak Melalui

Saya tidak berpikir ada metode seperti itu di Laravel. Anda harus membuat kueri khusus. Kueri kustom ini bisa sangat mahal karena beberapa kueri akan dilakukan. Jadi, solusi optimal untuk ini, menurut saya, adalah menghubungkan Pengguna dan Peluang dengan kunci asing.

Namun, jika Anda tidak ingin menautkan Pengguna dan Peluang dengan kunci asing, Anda dapat membuat kueri khusus untuk menangani ini. Cukup tambahkan relasi "hasManyThrough" antara model Peluang dan Klien seperti,

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

Kemudian buat fungsi statis dalam model Pengguna.

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

Sekarang Anda dapat mengakses Peluang yang diberikan kepada Pengguna dalam sekali jalan seperti,

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

Ini akan mengembalikan semua peluang semua klien yang terkait dengan Pengguna dengan id '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. Sanitasi parameter pengguna MySQL

  2. Batch Pernyataan yang disiapkan Java MySQL

  3. Sekuel:Menggunakan Banyak Basis Data

  4. Cara terbaik untuk Memasukkan data JSON ke MYSQL

  5. Mengekspor tabel dari Amazon RDS ke file CSV