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

CakePHP 3 - Lưu dữ liệu với các liên kết phụ thuộc vào liên kết

Có vẻ như có một trường boolean trong bảng người dùng xác định xem người dùng có phải là quản trị viên hay không sẽ có ý nghĩa hơn.

Điều đó đang được nói, bạn có thể cần phải xác định mối quan hệ trong các mô hình của mình nếu nó chưa có. Về mặt kỹ thuật, dựa trên tên bảng và và các cột (user_id) Cake sẽ giúp bạn làm được điều này, nhưng tôi không nhớ liệu thông thường có các tên mô hình số nhiều (Người dùng, Quản trị viên) hay không, vì vậy điều này có thể đã không xảy ra.

Người dùng:

public $belongsTo = [
    'Admins' => [
        'classname' => 'Admins', //are your models really plural? 
        'foreignKey' => 'user_id',
];

Quản trị viên

public $hasOne= [
    'Users' => [
        'classname' => 'Users',
        'foreignKey' => 'user_id',
];

Sau đó, tôi nghĩ bạn cần chỉ định một số thông tin về quản trị viên, nếu không bạn sẽ không có bất kỳ dữ liệu nào để lưu liên kết. Theo quan điểm:

echo $this->Form->input('admins.field1');
echo $this->Form->input('admins.field2');
echo $this->Form->input('admins.field3');

Lưu ý rằng các trường này có thể bị ẩn nếu bạn không muốn nhập bất kỳ thứ gì.

Để lưu, hãy tạo người dùng mới từ dữ liệu yêu cầu (biểu mẫu của bạn tạo người dùng, nhưng bạn có thể tạo quản trị viên với biểu mẫu, sau đó thêm các đầu vào như user.name và user.surname). Bộ điều khiển:

$user = $this->Admins->Users->newEntity();

if($this->request->is('post')) {
    $this->Admins->Users->patchEntity($user, $this->request->data, [
        'associated' => ['Admins']
    ]);
    $this->Admins->Users->save($user);
}


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Thêm các cột mới vào bảng hiện có trong quá trình di chuyển trong Laravel

  2. Mysql kết nối trong hai bảng

  3. # 1062 - Mục nhập trùng lặp '' cho khóa 'unique_id' khi cố gắng thêm KEY DUY NHẤT (MySQL)

  4. Laravel và AWS Cloudfront

  5. bản ghi android / php không chèn vào mysql