Mysql
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Mysql

Tham gia pivot Laravel 5.5 để nhận các giá trị pivot với kết quả MySQL chính

Tôi đã gặp trường hợp tương tự và tôi Phạm vi truy vấn cùng với bảng tổng hợp của tôi cho mối quan hệ từ một đến nhiều. Trong tình huống của tôi, Người dùng có nhiều nhóm và tôi cần tìm nạp những dữ liệu đó cùng với đối tượng người dùng mà không cần truy vấn bổ sung hoặc không có THAM GIA. Xem Query scope và một đến nhiều và nhiều thành nhiều với xoay trên Laravel Doc.

Nếu bạn muốn tìm nạp dữ liệu bằng cách sử dụng bảng pivote, đây là ví dụ
Mô hình người dùng:

class User extends Authenticatable
{
    use Notifiable;


    protected $fillable = [
        'name', 'email', 'username', 'password',
    ];


    protected $hidden = [
        'password', 'remember_token',
    ];


    public function groups()
    {
        return $this->belongsToMany('App\Group', 'user_groups', 
          'user_id', 'group_id');
    }
    public function scopeDetail($query)
    {
        return $query->with('groups');
    }
}

Mô hình nhóm:

class Group extends Model
{
    protected $fillable = [
        'dn', 'cn', 'description',
    ];
}

Trong mô hình người dùng ở trên, hãy xem return $this->belongsToMany('App\Group','user_groups', 'user_id', 'group_id'); , trong đó user_groups là bảng tổng hợp của tôi xác định mối quan hệ giữa người dùng và nhóm. group_iduser_id là các trường trong bảng pivote.

Hiện đang tìm nạp dữ liệu (trên bộ điều khiển) bằng cách sử dụng architechture trên:

User::where(.....)->detail()->first();

ở đâu detail() phạm vi của tôi có được xác định trong Mô hình người dùng là scopeDetail không . Lưu ý:scope tiền tố phải được đính kèm. Điều này sẽ cung cấp cho bạn người dùng với tất cả các nhóm mà người dùng thuộc về trong mảng, vì vậy bất cứ khi nào bạn xem dữ liệu của mình trong JSON, bạn có thể thấy cấu trúc theo cách phù hợp.

Sử dụng phương pháp trên, người dùng của tôi đối tượng có tất cả các nhóm mà người dùng thuộc về.

Thêm
Nếu mô hình người dùng của bạn (người dùng) cũng liên quan đến các mô hình khác thì bạn có thể bao gồm tất cả những người đó bằng cách xác định phạm vi trên lớp mô hình là

............
//..............
    public function profile()
    {
        return $this->belongsToMany('App\Profile', 'user_id');
    }
    public function data1()
    {
        return $this->belongsToMany('App\Data1', 'user_id');
    }
    public function groups()
    {
        return $this->belongsToMany('App\Group', 'user_groups', 
          'user_id', 'group_id');
    }
    //Defining query scope................
    public function scopeDetail($query)
    {
        return $query->with('groups','profile','data1');
        //to fetch user with this scope use User::where(.....)->detail()->get(); notice there is not scope prefix while using the scope
    }
........
........



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. cách đặt lại mật khẩu của người dùng root trong MySQL workbench

  2. Xuất dữ liệu từ Cơ sở dữ liệu MySQL

  3. Tại sao Hibernate / JDBC / MySQL giảm kết nối sau một ngày hoặc lâu hơn?

  4. Làm thế nào để bạn giữ đơn hàng bằng cách sử dụng SELECT WHERE IN ()?

  5. Tốt hơn nên sử dụng zero-date '0000-00-00 00:00:00' hoặc NULL trong MySQL?