sql >> データベース >  >> RDS >> Mysql

Yii2:関連するテーブルの別のフィールドに基づいてフィールドを自動入力

    必要なのはAJAXを呼び出すことだけです 必要なフィールドを取得するように要求します。以下のように行動してください:

    1. (モデル名はわかりません)フォームを見て、idが何であるかを確認してください あなたのpatient_name 分野。通常はmodelname-fieldname 。モデル名はPatientだと思います 。したがって、patient_nameのID patient-patient_nameになります 。

    2. (ビューで)ajaxリクエストを追加します。

    AJAXを呼び出すためのコードは次のようになります。

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

    注:

    • ControllerNameを変更します 上記のコードであなた自身のものを使ってください。
    • cityのIDを想定しました およびstate フィールドのIDは次のとおりです。patient-city およびstate-city 比較的。
    • 患者 コントローラのアクションです
    • アラート|ログを削除し、上記のコードをカスタマイズする必要がある場合があります
    • コードクリーニングの条件は考慮していません。ユーザーデータが正しいことを確認してください。

      1. 最後に、コントローラーにアクションコードを追加します。

    アクションコード:

    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. クエリを循環して複数のテーブルを作成する

    2. MySQL Workbench 5.2を使用してテーブルでupdateコマンドを実行中にエラー(エラーコード:1175)

    3. mysqlとmysql2gemの違いは何ですか

    4. SQL標準UPSERT呼び出し