0

従業員テーブルへのbelongsToリレーションとしてフィールドemployee_idを持つ「本番」テーブルがあります。

問題は、employeesテーブルが主キーとしてフィールドemp_appserialを使用していることです-idフィールドではありません-(employeesテーブルのすべてのエントリがid値を取得するわけではなく、全員が自動インクリメントemp_appserialを取得します)

id以外のフィールドを使用してsaveFieldを使用してレコードにアクセスする方法があるかどうか疑問に思います:(「id」値がなく、emp_appserialのみがpkであるレコードがあると述べました)

    $this->loadModel('Employees');
    $this->Employees->id = $id;
    $this->Employees->saveField('emp_hrnote', 'text to be saved');

使用したい:

$this->Employees->emp_appserial = $id;

それ以外の

$this->Employees->id = $id;

私はそれができますか?

それを除けば、テーブルを再設計するのに遅すぎることはないかもしれませんが、私はすでに多くの本番データを持っています:-(

ポインタをありがとうございます。

4

2 に答える 2

3

以下はトリックを行う必要があります(ところで、モデルは特異でなければなりません):

class Employees extends Model {
    public $primaryKey = 'emp_appserial';
}

$primaryKey属性を設定しない場合、次のように設定されidます: Source

saveField()条件にそのフィールドを使用するように設定すると:ソース

編集:明確にするためにModel::$id、主キーの値を設定するために引き続き使用します。Model::$id主キーModel::$primaryKey保持し、主キーフィールドを保持します

于 2012-10-13T07:04:54.750 に答える
0

使用済み

    $this->Employee->updateAll(
            array('Employee.emp_hrnote' => "$thetxt"), 
            array('Employee.emp_appserial' => $id)
    );

回避策としては問題ありませんが、空の ID の問題を解決できればと思います...これに関する別の問題は別の投稿に投稿します。

于 2012-10-13T07:20:10.403 に答える