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

Yii2:tự động điền các trường dựa trên một trường khác từ bảng liên quan

Tất cả những gì bạn cần là gọi một AJAX yêu cầu nhận các trường cần thiết. Chỉ cần hành động như dưới đây:

  1. (Tôi không biết tên kiểu máy của bạn) hãy xem biểu mẫu của bạn và xem id là gì trong số patient_name của bạn đồng ruộng. Nó thường là modelname-fieldname . Tôi giả định rằng tên kiểu máy của bạn là Patient . Vì vậy, id của patient_name sẽ là patient-patient_name .

  2. Thêm yêu cầu ajax (theo quan điểm của bạn).

Mã để gọi AJAX có thể trông giống như bên dưới:

$this->registerJs("$('#patient-patient_name').on('change',function(){
    $.ajax({
        url: '".yii\helpers\Url::toRoute("controllerName/patient")."',
        dataType: 'json',
        method: 'GET',
        data: {id: $(this).val()},
        success: function (data, textStatus, jqXHR) {
            $('#patient-city').val(data.city);
            $('#patient-state').val(data.state);
        },
        beforeSend: function (xhr) {
            alert('loading!');
        },
        error: function (jqXHR, textStatus, errorThrown) {
            console.log('An error occured!');
            alert('Error in ajax request');
        }
    });
});"); 

Ghi chú:

  • Thay đổi Tên người điều khiển trong đoạn mã trên với mã của riêng bạn.
  • Tôi đã giả định rằng id của citystate các trường có (các) id sau:patient-citystate-city tương đối.
  • bệnh nhân là một hành động trong bộ điều khiển của bạn
  • Bạn có thể cần xóa nhật ký | cảnh báo và thực hiện một số tùy chỉnh trên mã trên
  • Tôi đã không xem xét bất kỳ điều kiện nào để làm sạch mã. Hãy đảm bảo rằng dữ liệu người dùng là chính xác.

    1. Cuối cùng, hãy thêm mã hành động vào bộ điều khiển của bạn.

Mã hành động:

public function actionPatient($id){
    // you may need to check whether the entered ID is valid or not
    $model=  \app\models\Patient::findOne(['id'=>$id]);
    return \yii\helpers\Json::encode([
        'city'=>$model->city,
        'state'=>$model->state
    ]);
}



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Dữ liệu Sqlite và các nút được tạo Tự động trên ScrollPane

  2. Cơ sở dữ liệu sao lưu MySQL

  3. SQLAlchemy Reflection:Làm cách nào để truy vấn dữ liệu từ các cột cụ thể?

  4. Bắt đầu với việc tạo phiên bản cho mysql schemata mà không cần quá mức cần thiết. Các giải pháp tốt?

  5. Chức năng MYSQL TIMEDIFF không hoạt động trong một ngày dài