0

我没有运气试图弯曲 CakePHP 来做我需要的事情。

我有 2 个模型,Listing & ListingService。

ListingService 的字段如下:id, title, listing_id, service_type_id

当我现在进行查找时。(在Listing.php中使用belongsTo)

public $belongsTo = array(
    'ListingService' => array(
        'className'  => 'ListingService',
        'foreignKey' => 'id'
    )
);

$this->paginate = array('type' => 'all', 'recursive' => 0,
        'fields' => array('Listing.id', 'Listing.title',
                   'ListingService.service_type_id','ListingService.title'),
        'limit' => 10
);

这是显示的查询

SELECT `Listing`.`id`, `Listing`.`title`, `ListingService`.`service_type_id`, `ListingService`.`title` FROM `listings` AS `Listing` LEFT JOIN `listing_services` AS `ListingService` ON (`Listing`.`id` = `ListingService`.`id`) LIMIT 10

这几乎是我所需要的,除了我希望 LEFT JOIN 为 ON ( Listing. id= ListingService. listing_id) 而不是 ON ( Listing. id= ListingService. id)

如果我使用“hasMany”,它甚至不会执行 LEFT JOIN。

我目前没有 ListingService.php 模型。

请赐教。

谢谢你,
三通

4

2 回答 2

0

找到了解决方案。

我需要先做到这一点。

$this->Listing->ListingService->primaryKey = 'listing_id';

这是黑客吗?如果是,有没有更好的方法来做到这一点?

于 2013-04-26T23:35:25.770 回答
0

我认为你的 belongsTo 应该是这样的

 public $belongsTo = array(
    'ListingService' => array(
         'className'  => 'ListingService',
         'foreignKey' => 'listing_id'
    )
 );
于 2013-09-11T16:50:43.287 回答