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

Yii2:otomatis mengisi bidang berdasarkan bidang lain dari tabel terkait

Yang Anda butuhkan hanyalah memanggil AJAX permintaan untuk mendapatkan bidang yang dibutuhkan. Cukup bertindak seperti di bawah ini:

  1. (Saya tidak tahu nama model Anda) lihat formulir Anda dan lihat apa id dari patient_name your Anda bidang. Biasanya modelname-fieldname . Saya berasumsi bahwa nama model Anda adalah Patient . Jadi, id dari patient_name akan menjadi patient-patient_name .

  2. Tambahkan permintaan ajax (dalam pandangan Anda).

Kode untuk memanggil AJAX dapat terlihat seperti di bawah ini:

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

Catatan:

  • Ubah Nama Pengontrol dalam kode di atas dengan kode Anda sendiri.
  • Saya berasumsi bahwa id city dan state bidang memiliki id berikut:patient-city dan state-city relatif.
  • sabar adalah tindakan di pengontrol Anda
  • Anda mungkin perlu menghapus lansiran|log dan melakukan beberapa penyesuaian pada kode di atas
  • Saya tidak mempertimbangkan kondisi apa pun untuk pembersihan kode. Pastikan data pengguna sudah benar.

    1. Terakhir, tambahkan kode tindakan ke pengontrol Anda.

Kode tindakan:

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. PANJANG MYSQL CONCAT MAX

  2. Kolom kenaikan otomatis:perbedaan sintaks SQL antara Oracle dan MySQL

  3. Perbedaan antara real_escape_string dan prepare()?

  4. Kesalahan offset tidak terdefinisi pada php saat mengimpor CSV

  5. MySQL - cara mengelompokkan jam, diimbangi dengan 30 menit