سلام
سه تا مدل داریم : Post , Category , PostCategory
ارتباط Post و Category از نوع HABTM هست و از طریق جدول post_categories برقرار میشه
در مدل Post داریم :
کد PHP:
var $hasAndBelongsToMany = array(
'Category' => array(
'className' => 'Category',
'joinTable' => 'post_categories',
'foreignKey' => 'post_id',
'associationForeignKey' => 'category_id',
'fields' => array('id','name','basename'),
'finderQuery' => ''
)
);
هنگام خروجی گرفتن از مدل Post خروجی مشابه زیر داریم :
کد PHP:
Array
(
[0] => Array
(
[Post] => Array
(
[id] => 19
[title] => amir beshkar post
[body] =>
)
[Category] => Array
(
[0] => Array
(
[id] => 13
[basename] => category-1
[name] => Category 1
)
[1] => Array
(
[id] => 14
[basename] => category-2
[name] => Category 2
)
)
)
)
خب این خروجی نشون میده ارتباط به درستی برقرار شده و همینطور post شماره
19 با دستههای 13 و 14 ارتباط داره.
حالا ما میخوام بر اساس مشخصات دسته در پستها جستوجو کنیم. مثلا به شکل
زیر :
کد PHP:
$this->paginate['conditions'] = array('Category.basename'=>'test');
$this->paginate['fields'] = array( 'Post.*','Category.*');
$posts = $this->paginate('Post');
با نوشتن دستور بالا با خطای زیر مواجه میشیم :
کد PHP:
SQL Error: 1054: Unknown column 'Category.basename' in 'where clause' [CORE/cake/libs/model/datasources/dbo_source.php, line 673]
Query: SELECT COUNT(*) AS `count` FROM `post_categories` AS `PostCategory` WHERE `Category`.`basename` = 'test'
چطور میتونیم این کار رو انجام بدیم ؟؟؟
فیلدهای جدول posts عبارتند از : id, title, body
فیلدهای جدول categories عبارتند از : id, name, basename
فیلدهای جدول post_categories عبارتند از : id, post_id, category_id
مرسی
جواب رو پیدا کردم . به اینجا مراجعه کنین :
http://cakebaker.42dh.com/2007/10/17/pag...ationship/
اشتباه من در بالا : نام جدول رابط رو بد انتخاب کرده بودم !
با تشکر از آقای سوزنچی !