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

Laravel:Cách sử dụng nhiều mối quan hệ bảng tổng hợp

Thiết lập này sẽ giúp bạn bắt đầu. Tôi đã cố gắng giữ cho việc đặt tên càng đơn giản càng tốt.

users
    id
    username

challenge_user
    user_id
    challenge_id

challenges
    id
    name
    topic_id      
    category_id

topics
    id
    name

categories
    id
    name

Xác định Mô hình Hùng biện của bạn

class User extends Eloquent {
    public function challenges() {
        return $this->belongsToMany('Challenge');
    }
}

class Challenge extends Eloquent {
    public function users() {
        return $this->belongsToMany('User');
    }
    public function topic() {
        return $this->belongsTo('Topic');
    }
    public function category() {
        return $this->belongsTo('Category');
    }
}

class Topic extends Eloquent {
    public function challenges() {
        return $this->hasMany('Challenge');
    }
}

class Category extends Eloquent {
    public function challenges() {
        return $this->hasMany('Challenge');
    }
}

Sử dụng Mô hình Hùng biện của bạn ... chỉ là một số ví dụ về những gì bạn có thể làm.

// Collection of all Challenges by Topic name
Topic::with('challenges')->whereName($topic_name)->first()->challenges;

// Collection of all Challenges by Category name
Category::with('challenges')->whereName($category_name)->first()->challenges;

// Collection of all Users by Challenge id
Challenge::with('users')->find($challenge_id)->users;

// Collection of Users with atleast 2 Challenges
User::has('challenges', '>', 1)->get();

// Attach Challenge to User
$user = User::find($id);
$user->challenges()->attach($challenge_id);

// Assign a Topic to a Challenge
$challenge = Challenge::find($challenge_id);
$topic     = Topic::find($topic_id);

$challenge->topic()->associate($topic);
$challenge->save();

Tài liệu tham khảo và cách đọc đề xuất:

Mối quan hệ thường xuyên của Laravel belongsTo belongsToMany hasMany

Quan hệ truy vấn Model::has()

Đang tải hứng thú Model::with()

Thuộc tính động để truy cập mối quan hệ Giải quyết mối quan hệ $model->relationship

Chèn các mô hình có liên quan attach() associate()

Phạm vi truy vấn

Làm việc với bảng Pivot Nếu bạn cần truy xuất dữ liệu bổ sung từ bảng tổng hợp.




  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Tại-Đăng nhập câu lệnh SQL trước tên cột

  2. Đá quý mysql2 được biên dịch cho thư viện máy khách mysql sai

  3. Câu lệnh SQL đang bỏ qua tham số where

  4. MySQL 'Đã cắt ngắn giá trị INTEGER không chính xác'

  5. Chèn khóa chính tăng tự động vào bảng hiện có