زمان جاری: 2012/05/23, 03:11 AM خوش آمدید مهمان گرامی! (ورودعضویت)



اشکال در جستجو در مدل‌هایی با ازتباط HABTM


ارسال موضوع  ارسال پاسخ 
  • 0 رای - 0 میانگین
  • 1
  • 2
  • 3
  • 4
  • 5
رتبه موضوع:
 
اشکال در جستجو در مدل‌هایی با ازتباط HABTM
نویسنده پیام
امیر آفلاین
تازه کار
*

ارسال‌ها: 21
تاریخ عضویت: Aug 2010
رتبه: 0
تشکر: 5
9 بار تشکر شده در 9 پست
ارسال: #1
اشکال در جستجو در مدل‌هایی با ازتباط HABTM
سلام
سه تا مدل داریم : 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 Error1054Unknown column 'Category.basename' in 'where clause' [CORE/cake/libs/model/datasources/dbo_source.phpline 673]
QuerySELECT COUNT(*) AS `countFROM `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/

اشتباه من در بالا :‌ نام جدول رابط رو بد انتخاب کرده بودم !
با تشکر از آقای سوزنچی ! Smile
(آخرین تغییر در این ارسال: 2011/03/13 06:32 PM توسط امیر.)
2011/03/13 06:09 PM
یافتن تمامی ارسال‌های این کاربر نقل قول این ارسال در پاسخ
 تشکر شده توسط : payamsp saleh
ارسال موضوع  ارسال پاسخ 


پرش در انجمن: