1

如何重置不同地方的连接类型?

这是我的表:

租约表

class TenancyTable extends Table
{

    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->table('tenancy');
        $this->displayField('id');
        $this->primaryKey('id');

        $this->addBehavior('Timestamp');

        $this->belongsTo('Properties', [
            'foreignKey' => 'property_id',
            'className' => 'property',
            'joinType' => 'INNER'
        ]);

属性表

class PropertyTable extends Table
{

    /**
     * Initialize method
     *
     * @param array $config The configuration for the Table.
     * @return void
     */
    public function initialize(array $config)
    {
        parent::initialize($config);

        $this->table('property');
        $this->displayField('id');
        $this->primaryKey('id');

        $this->addBehavior('Timestamp');

        $this->hasMany('Tenancies', [
            'foreignKey' => 'property_id',
            'className' => 'tenancy',
            'joinType' => 'LEFT'
        ]);

例如,将 Tenancy join 类型更改为 Right

 $setting = [
      'contain' => [
          'Tenancies' => [
              'joinType' => 'RIGHT'
          ]
      ]
 ];

$properties = $this->find('all', $setting)
       ->hydrate(false)
       ->select(['Property.id', 'Property.company_id', 'Property.address1', 'Property.postcode'])
4

1 回答 1

2

您将完全按照您显示它的方式进行操作,即通过joinType在设置中指定选项contain

但是,由于您是从Property表中查询,因此这不会产生任何影响,因为hasMany关联是在单独的查询中检索的,因此不涉及连接。它适用于和关联,它们在同一个查询被检索。hasOnebelongsTo

于 2016-04-03T16:20:58.710 回答