ちょっとした問題と単純な間違いしかないことを願っています。Cakephp 2 アプリケーションを取得しましたが、現在 3.1 に切り替えています。モデルの関連付けに問題がありました。
ここでテーブルの定義:
namespace ProjectDesigner\Model\Table;
use Cake\ORM\Table;
class ZToolProjectsStepsTable extends Table {
#public $useTable ="z_tool_project_steps";
public $primaryKey = "id";
public $actsAs = array( 'Containable' );
public $name= "";
public $descr = "";
public $closing_desc = "";
public $activ_step = true;
public $custom_step = false;
public $open_step = true;
public $internal_custom_name = "";
public $step_order = 0;
public $project_id;
public function initialize(array $config){
$this->table('z_tool_project_steps');
$this->hasMany('dataSources',[
'className' => 'ProjectDesigner.ZToolPStepsDataSources',
'foreignKey' => 'step_id'
]);
...
ここで、関連付けられた「dataSources」を使用してモデルをロードしたいと思います
$ZToolProjectStep = TableRegistry::get('ProjectDesigner.ZToolProjectSteps');
$steps = $ZToolProjectStep->find('all', array(
'conditions' => array('project_id' => $project_id)
,'contain' => ['dataSources', 'exTemplates']
,'order' => 'ZToolProjectSteps.step_order'));
最初にマッチングメソッドなしで試してみましたが、どちらの場合も同じエラーが発生します:
ZToolProjectSteps は dataSources に関連付けられていません
私の理解では、関連付けを正しく定義する必要があり、マッチングがなくてもファインダーを呼び出すときに、このメソッドも正しく呼び出す必要がありました。
私はぐるぐる回っていますが、多くの例や同様の問題はありません。だから、あなたが私を助けて、私の小さな間違いを見せてくれることを願っています:)
どうもありがとう。
Ⅴ