2

私はCakePHPに不慣れで、まだ基本を理解しています。現在、モデルから(別のリンクされたモデルの内部から)1つ以上のフィールドを取得するプロセスに少し不思議に思っています。

これまでのところ、私はこれを持っています:

$this->user->id = 123;
$this->User->read();
$field1 = $this->User->data['User']['field1'];
$field2 = $this->User->data['User']['field2'];

これはひどく冗長に思えます。

この:

$this->user->id = 123;
$field1 = $this->User->field('field1');
$field1 = $this->User->field('field2');

これはそれほど長くはないようですが、2つのクエリが発生します。

これらの状況で行っていたこと、プレケーキ:

$this->User = new User(123);
$field1 = $this->User->field1;
$field2 = $this->User->field2;

または私がタイプしたいと思ったとき:

this->User = new User(123);
$field1 = $this->User->getFieldOne();
$field2 = $this->User->getFieldTwo();

それで、質問:私はこのタスクを達成するためにCakePHPにいくつかの魔法を逃していますか、それとも私はたくさんタイプすることで生きなければなりませんか?

4

3 に答える 3

4

あなたは決して信じないでしょうが、短い道があります:-)

$this->User->find('all', array('fields'=>array('field1', 'field2')));
于 2010-02-18T23:54:08.160 に答える
2
$arrayOfFiels = array('field1', 'field2');
$this->User->id = 123;
$userFields = $this->User->read($arrayOfFields);

または次のようなもの:

$userFields = $this->User->read(null, 123);

どちらの場合も、$userFields はUser #123データを含む配列になります。2 番目の例では、最初の引数が に設定されているためnull、すべてのフィールドがフェッチされます。2 番目の引数 (オプション) は ID を設定します。これは、最初の例のように事前に設定することもできます。

于 2010-02-18T22:22:58.030 に答える
0

モデルからデータを取得するには、「読み取り」、「検索」、または「クエリ」のいずれかを使用できます

読んだ

$fields = array('field1','field2');
$this->data = $this->User->read( $fields,$someid );

探す

$this->data = $this->User->find('all',array('fields'=>array('field1','field2') );

クエリ

$this->data = $this->User->query("select field1,field2 from user where id=$someid;");
于 2010-02-21T08:44:43.427 に答える