Hatena::Groupnequal

nequal::unfair

2008-02-14

rhacoのCriteriaまわりを整理する準備

| 02:57 | rhacoのCriteriaまわりを整理する準備 - nequal::unfair を含むブックマーク はてなブックマーク - rhacoのCriteriaまわりを整理する準備 - nequal::unfair

とりあえず、irhacoを使って、返り値をL::dにぶち込む。

目次

  • [draft]rhacoのCriteriaまわりを整理する準備
    • 用意したテーブル
    • Itemの中身
    • Categoryの中身
    • CategoriesItemsの中身
    • select時にdependしてみる
    • factしてみる
    • factして、flatしてみる。
    • factでflatして、さらにCategoryで絞り込む
    • まとめ
    • 追記

用意したテーブル

<project rhacover="1.4.1" version="1.0.0" name="rhadb" xmlns="http://rhaco.org" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://rhaco.org http://media.rhaco.org/project.xsd">
    <database name="test" renew="true">
        <table name="item" admin="true">
            <column name="id" type="serial" />
            <column name="name" type="string" require="true" />
            <column name="description" type="text" />
        </table>
        <table name="category" admin="true">
            <column name="id" type="serial" />
            <column name="title" type="string" require="true" />
            <column name="description" type="text" />
        </table>
        <table name="categories_items" admin="true">
            <column name="id" type="serial" />
            <column name="item_id" type="integer" reference="item.id" />
            <column name="category_id" type="integer" reference="category.id" />
        </table>
    </database>
</project>

Itemの中身

>> L::d($db->select(new Item()));
array(2) {
  [0]=>
  string(62) "/Users/riaf/Sites/test/rhadb/irhaco.php(138) : eval()'d code:1"
  [1]=>
  array(5) {
    [0]=>
    object(Item)#6 (4) {
      ["id"]=>
      int(1)
      ["name"]=>
      string(5) "test1"
      ["description"]=>
      string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
      ["dependCategoriesItemss"]=>
      NULL
    }
    [1]=>
    object(Item)#17 (4) {
      ["id"]=>
      int(2)
      ["name"]=>
      string(5) "test2"
      ["description"]=>
      string(458) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
2222222222

"
      ["dependCategoriesItemss"]=>
      NULL
    }
    [2]=>
    object(Item)#16 (4) {
      ["id"]=>
      int(3)
      ["name"]=>
      string(5) "test3"
      ["description"]=>
      string(7) "3だよ"
      ["dependCategoriesItemss"]=>
      NULL
    }
    [3]=>
    object(Item)#15 (4) {
      ["id"]=>
      int(4)
      ["name"]=>
      string(5) "test4"
      ["description"]=>
      string(8) "unkeunke"
      ["dependCategoriesItemss"]=>
      NULL
    }
    [4]=>
    object(Item)#7 (4) {
      ["id"]=>
      int(5)
      ["name"]=>
      string(5) "test5"
      ["description"]=>
      string(22) "てぃうんてぃうn"
      ["dependCategoriesItemss"]=>
      NULL
    }
  }
}

Categoryの中身

>> L::d($db->select(new Category()));
array(2) {
  [0]=>
  string(62) "/Users/riaf/Sites/test/rhadb/irhaco.php(138) : eval()'d code:1"
  [1]=>
  array(3) {
    [0]=>
    object(Category)#20 (4) {
      ["id"]=>
      int(1)
      ["title"]=>
      string(24) "うんこなカテゴリ"
      ["description"]=>
      string(24) "みんなもだいすき"
      ["dependCategoriesItemss"]=>
      NULL
    }
    [1]=>
    object(Category)#15 (4) {
      ["id"]=>
      int(2)
      ["title"]=>
      string(27) "いまどきPHPじゃない"
      ["description"]=>
      string(33) "ありえないですよねー。"
      ["dependCategoriesItemss"]=>
      NULL
    }
    [2]=>
    object(Category)#21 (4) {
      ["id"]=>
      int(3)
      ["title"]=>
      string(24) "PHPが許されるのは"
      ["description"]=>
      string(30) "小学生までだよねー。"
      ["dependCategoriesItemss"]=>
      NULL
    }
  }
}

CategoriesItemsの中身

>> L::d($db->select(new CategoriesItems()));
array(2) {
  [0]=>
  string(62) "/Users/riaf/Sites/test/rhadb/irhaco.php(138) : eval()'d code:1"
  [1]=>
  array(4) {
    [0]=>
    object(CategoriesItems)#26 (5) {
      ["id"]=>
      int(1)
      ["itemId"]=>
      int(5)
      ["categoryId"]=>
      int(1)
      ["factItemId"]=>
      NULL
      ["factCategoryId"]=>
      NULL
    }
    [1]=>
    object(CategoriesItems)#15 (5) {
      ["id"]=>
      int(2)
      ["itemId"]=>
      int(2)
      ["categoryId"]=>
      int(2)
      ["factItemId"]=>
      NULL
      ["factCategoryId"]=>
      NULL
    }
    [2]=>
    object(CategoriesItems)#27 (5) {
      ["id"]=>
      int(3)
      ["itemId"]=>
      int(1)
      ["categoryId"]=>
      int(3)
      ["factItemId"]=>
      NULL
      ["factCategoryId"]=>
      NULL
    }
    [3]=>
    object(CategoriesItems)#28 (5) {
      ["id"]=>
      int(4)
      ["itemId"]=>
      int(1)
      ["categoryId"]=>
      int(2)
      ["factItemId"]=>
      NULL
      ["factCategoryId"]=>
      NULL
    }
  }
}

select時にdependしてみる

Itemに

>> L::d($db->select(new Item(), new C(Q::depend())));
array(2) {
  [0]=>
  string(62) "/Users/riaf/Sites/test/rhadb/irhaco.php(138) : eval()'d code:1"
  [1]=>
  array(5) {
    [0]=>
    object(Item)#26 (4) {
      ["id"]=>
      int(1)
      ["name"]=>
      string(5) "test1"
      ["description"]=>
      string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
      ["dependCategoriesItemss"]=>
      array(2) {
        [0]=>
        object(CategoriesItems)#39 (5) {
          ["id"]=>
          int(3)
          ["itemId"]=>
          int(1)
          ["categoryId"]=>
          int(3)
          ["factItemId"]=>
          NULL
          ["factCategoryId"]=>
          NULL
        }
        [1]=>
        object(CategoriesItems)#40 (5) {
          ["id"]=>
          int(4)
          ["itemId"]=>
          int(1)
          ["categoryId"]=>
          int(2)
          ["factItemId"]=>
          NULL
          ["factCategoryId"]=>
          NULL
        }
      }
    }
    [1]=>
    object(Item)#28 (4) {
      ["id"]=>
      int(2)
      ["name"]=>
      string(5) "test2"
      ["description"]=>
      string(458) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
2222222222

"
      ["dependCategoriesItemss"]=>
      array(1) {
        [0]=>
        object(CategoriesItems)#37 (5) {
          ["id"]=>
          int(2)
          ["itemId"]=>
          int(2)
          ["categoryId"]=>
          int(2)
          ["factItemId"]=>
          NULL
          ["factCategoryId"]=>
          NULL
        }
      }
    }
    [2]=>
    object(Item)#21 (4) {
      ["id"]=>
      int(3)
      ["name"]=>
      string(5) "test3"
      ["description"]=>
      string(7) "3だよ"
      ["dependCategoriesItemss"]=>
      NULL
    }
    [3]=>
    object(Item)#15 (4) {
      ["id"]=>
      int(4)
      ["name"]=>
      string(5) "test4"
      ["description"]=>
      string(8) "unkeunke"
      ["dependCategoriesItemss"]=>
      NULL
    }
    [4]=>
    object(Item)#27 (4) {
      ["id"]=>
      int(5)
      ["name"]=>
      string(5) "test5"
      ["description"]=>
      string(22) "てぃうんてぃうn"
      ["dependCategoriesItemss"]=>
      array(1) {
        [0]=>
        object(CategoriesItems)#38 (5) {
          ["id"]=>
          int(1)
          ["itemId"]=>
          int(5)
          ["categoryId"]=>
          int(1)
          ["factItemId"]=>
          NULL
          ["factCategoryId"]=>
          NULL
        }
      }
    }
  }
}

Itemに対して、referenceしてるオブジェクトがくっついてくる。


factしてみる

CategoriesItems

>> L::d($db->select(new CategoriesItems(), new C(Q::fact())));
array(2) {
  [0]=>
  string(62) "/Users/riaf/Sites/test/rhadb/irhaco.php(138) : eval()'d code:1"
  [1]=>
  array(4) {
    [0]=>
    object(CategoriesItems)#29 (5) {
      ["id"]=>
      int(1)
      ["itemId"]=>
      int(5)
      ["categoryId"]=>
      int(1)
      ["factItemId"]=>
      object(Item)#28 (4) {
        ["id"]=>
        int(5)
        ["name"]=>
        string(5) "test5"
        ["description"]=>
        string(22) "てぃうんてぃうn"
        ["dependCategoriesItemss"]=>
        NULL
      }
      ["factCategoryId"]=>
      object(Category)#30 (4) {
        ["id"]=>
        int(1)
        ["title"]=>
        string(24) "うんこなカテゴリ"
        ["description"]=>
        string(24) "みんなもだいすき"
        ["dependCategoriesItemss"]=>
        NULL
      }
    }
    [1]=>
    object(CategoriesItems)#39 (5) {
      ["id"]=>
      int(2)
      ["itemId"]=>
      int(2)
      ["categoryId"]=>
      int(2)
      ["factItemId"]=>
      object(Item)#32 (4) {
        ["id"]=>
        int(2)
        ["name"]=>
        string(5) "test2"
        ["description"]=>
        string(458) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
2222222222

"
        ["dependCategoriesItemss"]=>
        NULL
      }
      ["factCategoryId"]=>
      object(Category)#33 (4) {
        ["id"]=>
        int(2)
        ["title"]=>
        string(27) "いまどきPHPじゃない"
        ["description"]=>
        string(33) "ありえないですよねー。"
        ["dependCategoriesItemss"]=>
        NULL
      }
    }
    [2]=>
    object(CategoriesItems)#31 (5) {
      ["id"]=>
      int(3)
      ["itemId"]=>
      int(1)
      ["categoryId"]=>
      int(3)
      ["factItemId"]=>
      object(Item)#36 (4) {
        ["id"]=>
        int(1)
        ["name"]=>
        string(5) "test1"
        ["description"]=>
        string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
        ["dependCategoriesItemss"]=>
        NULL
      }
      ["factCategoryId"]=>
      object(Category)#41 (4) {
        ["id"]=>
        int(3)
        ["title"]=>
        string(24) "PHPが許されるのは"
        ["description"]=>
        string(30) "小学生までだよねー。"
        ["dependCategoriesItemss"]=>
        NULL
      }
    }
    [3]=>
    object(CategoriesItems)#35 (5) {
      ["id"]=>
      int(4)
      ["itemId"]=>
      int(1)
      ["categoryId"]=>
      int(2)
      ["factItemId"]=>
      object(Item)#43 (4) {
        ["id"]=>
        int(1)
        ["name"]=>
        string(5) "test1"
        ["description"]=>
        string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
        ["dependCategoriesItemss"]=>
        NULL
      }
      ["factCategoryId"]=>
      object(Category)#44 (4) {
        ["id"]=>
        int(2)
        ["title"]=>
        string(27) "いまどきPHPじゃない"
        ["description"]=>
        string(33) "ありえないですよねー。"
        ["dependCategoriesItemss"]=>
        NULL
      }
    }
  }
}

reference先のデータも一緒に拾ってくる。


factして、flatしてみる。

CategoriesItemsのid=1のもの

>> L::d($db->select(new CategoriesItems(), new C(Q::eq(CategoriesItems::columnId(), 1), Q::fact(), Q::flat())));
PHP Notice:  Undefined index:  Item in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 29
PHP Notice:  Undefined index:  Category in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 27
PHP Notice:  Undefined index:  CategoriesItems in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 21
array(2) {
  [0]=>
  string(62) "/Users/riaf/Sites/test/rhadb/irhaco.php(138) : eval()'d code:1"
  [1]=>
  array(1) {
    [0]=>
    object(CategoriesItems__Item__Category__CategoriesItems)#21 (10) {
      ["CLASS"]=>
      array(3) {
        ["Item"]=>
        object(Item)#50 (4) {
          ["id"]=>
          &int(1)
          ["name"]=>
          &string(5) "test5"
          ["description"]=>
          &string(22) "てぃうんてぃうn"
          ["dependCategoriesItemss"]=>
          &NULL
        }
        ["Category"]=>
        object(Category)#36 (4) {
          ["id"]=>
          &int(1)
          ["title"]=>
          &string(24) "うんこなカテゴリ"
          ["description"]=>
          &string(22) "てぃうんてぃうn"
          ["dependCategoriesItemss"]=>
          &NULL
        }
        ["CategoriesItems"]=>
        object(CategoriesItems)#49 (5) {
          ["id"]=>
          &int(1)
          ["itemId"]=>
          &int(5)
          ["categoryId"]=>
          &int(1)
          ["factItemId"]=>
          &object(Item)#39 (4) {
            ["id"]=>
            int(5)
            ["name"]=>
            string(5) "test5"
            ["description"]=>
            string(22) "てぃうんてぃうn"
            ["dependCategoriesItemss"]=>
            NULL
          }
          ["factCategoryId"]=>
          &object(Category)#28 (4) {
            ["id"]=>
            int(1)
            ["title"]=>
            string(24) "うんこなカテゴリ"
            ["description"]=>
            string(24) "みんなもだいすき"
            ["dependCategoriesItemss"]=>
            NULL
          }
        }
      }
      ["title"]=>
      &string(24) "うんこなカテゴリ"
      ["name"]=>
      &string(5) "test5"
      ["description"]=>
      &string(22) "てぃうんてぃうn"
      ["dependCategoriesItemss"]=>
      &NULL
      ["id"]=>
      &int(1)
      ["itemId"]=>
      &int(5)
      ["categoryId"]=>
      &int(1)
      ["factItemId"]=>
      &object(Item)#39 (4) {
        ["id"]=>
        int(5)
        ["name"]=>
        string(5) "test5"
        ["description"]=>
        string(22) "てぃうんてぃうn"
        ["dependCategoriesItemss"]=>
        NULL
      }
      ["factCategoryId"]=>
      &object(Category)#28 (4) {
        ["id"]=>
        int(1)
        ["title"]=>
        string(24) "うんこなカテゴリ"
        ["description"]=>
        string(24) "みんなもだいすき"
        ["dependCategoriesItemss"]=>
        NULL
      }
    }
  }
}

なんかすごいオブジェクトが返ってきた。


factでflatして、さらにCategoryで絞り込む

CategoriesItemsでselectして、CategoryのIDが2の物を拾ってくる。

>> L::d($db->select(new CategoriesItems(), new C(Q::eq(Category::columnId(), 2), Q::fact(), Q::flat())));
PHP Notice:  Undefined index:  Item in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 29
PHP Notice:  Undefined index:  Category in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 27
PHP Notice:  Undefined index:  CategoriesItems in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 21
PHP Notice:  Undefined index:  Item in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 29
PHP Notice:  Undefined index:  Category in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 27
PHP Notice:  Undefined index:  CategoriesItems in /Users/riaf/Develop/php/lib/rhaco/Rhaco.php(372) : eval()'d code on line 21
array(2) {
  [0]=>
  string(62) "/Users/riaf/Sites/test/rhadb/irhaco.php(138) : eval()'d code:1"
  [1]=>
  array(2) {
    [0]=>
    object(CategoriesItems__Item__Category__CategoriesItems)#58 (10) {
      ["CLASS"]=>
      array(3) {
        ["Item"]=>
        object(Item)#48 (4) {
          ["id"]=>
          &int(2)
          ["name"]=>
          &string(5) "test2"
          ["description"]=>
          &string(458) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
2222222222

"
          ["dependCategoriesItemss"]=>
          &NULL
        }
        ["Category"]=>
        object(Category)#43 (4) {
          ["id"]=>
          &int(2)
          ["title"]=>
          &string(27) "いまどきPHPじゃない"
          ["description"]=>
          &string(458) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
2222222222

"
          ["dependCategoriesItemss"]=>
          &NULL
        }
        ["CategoriesItems"]=>
        object(CategoriesItems)#45 (5) {
          ["id"]=>
          &int(2)
          ["itemId"]=>
          &int(2)
          ["categoryId"]=>
          &int(2)
          ["factItemId"]=>
          &object(Item)#50 (4) {
            ["id"]=>
            int(2)
            ["name"]=>
            string(5) "test2"
            ["description"]=>
            string(458) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
2222222222

"
            ["dependCategoriesItemss"]=>
            NULL
          }
          ["factCategoryId"]=>
          &object(Category)#52 (4) {
            ["id"]=>
            int(2)
            ["title"]=>
            string(27) "いまどきPHPじゃない"
            ["description"]=>
            string(33) "ありえないですよねー。"
            ["dependCategoriesItemss"]=>
            NULL
          }
        }
      }
      ["title"]=>
      &string(27) "いまどきPHPじゃない"
      ["name"]=>
      &string(5) "test2"
      ["description"]=>
      &string(458) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
2222222222

"
      ["dependCategoriesItemss"]=>
      &NULL
      ["id"]=>
      &int(2)
      ["itemId"]=>
      &int(2)
      ["categoryId"]=>
      &int(2)
      ["factItemId"]=>
      &object(Item)#50 (4) {
        ["id"]=>
        int(2)
        ["name"]=>
        string(5) "test2"
        ["description"]=>
        string(458) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
2222222222

"
        ["dependCategoriesItemss"]=>
        NULL
      }
      ["factCategoryId"]=>
      &object(Category)#52 (4) {
        ["id"]=>
        int(2)
        ["title"]=>
        string(27) "いまどきPHPじゃない"
        ["description"]=>
        string(33) "ありえないですよねー。"
        ["dependCategoriesItemss"]=>
        NULL
      }
    }
    [1]=>
    object(CategoriesItems__Item__Category__CategoriesItems)#31 (10) {
      ["CLASS"]=>
      array(3) {
        ["Item"]=>
        object(Item)#38 (4) {
          ["id"]=>
          &int(4)
          ["name"]=>
          &string(5) "test1"
          ["description"]=>
          &string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
          ["dependCategoriesItemss"]=>
          &NULL
        }
        ["Category"]=>
        object(Category)#30 (4) {
          ["id"]=>
          &int(4)
          ["title"]=>
          &string(27) "いまどきPHPじゃない"
          ["description"]=>
          &string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
          ["dependCategoriesItemss"]=>
          &NULL
        }
        ["CategoriesItems"]=>
        object(CategoriesItems)#55 (5) {
          ["id"]=>
          &int(4)
          ["itemId"]=>
          &int(1)
          ["categoryId"]=>
          &int(2)
          ["factItemId"]=>
          &object(Item)#32 (4) {
            ["id"]=>
            int(1)
            ["name"]=>
            string(5) "test1"
            ["description"]=>
            string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
            ["dependCategoriesItemss"]=>
            NULL
          }
          ["factCategoryId"]=>
          &object(Category)#27 (4) {
            ["id"]=>
            int(2)
            ["title"]=>
            string(27) "いまどきPHPじゃない"
            ["description"]=>
            string(33) "ありえないですよねー。"
            ["dependCategoriesItemss"]=>
            NULL
          }
        }
      }
      ["title"]=>
      &string(27) "いまどきPHPじゃない"
      ["name"]=>
      &string(5) "test1"
      ["description"]=>
      &string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
      ["dependCategoriesItemss"]=>
      &NULL
      ["id"]=>
      &int(4)
      ["itemId"]=>
      &int(1)
      ["categoryId"]=>
      &int(2)
      ["factItemId"]=>
      &object(Item)#32 (4) {
        ["id"]=>
        int(1)
        ["name"]=>
        string(5) "test1"
        ["description"]=>
        string(1038) "てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!
てすとだおおおおおおおおおおおおおおおおおおお!

"
        ["dependCategoriesItemss"]=>
        NULL
      }
      ["factCategoryId"]=>
      &object(Category)#27 (4) {
        ["id"]=>
        int(2)
        ["title"]=>
        string(27) "いまどきPHPじゃない"
        ["description"]=>
        string(33) "ありえないですよねー。"
        ["dependCategoriesItemss"]=>
        NULL
      }
    }
  }
}

これ投げてから、単純に Q::eq(CategoriesItems::columnCategoryId(), 2) で良い気がした。


まとめ

rhacoのCriteriaは超強力。


追記

実験に使ったデータのexport

http://riaf.org/tmp/rhadb/

tokushimatokushima2008/02/15 17:18なんかNoticeでてますね><
データをexportしてもらえると幸せ

tokushimatokushima2008/02/15 23:22revision 2739.でNoticesのバグ修正しました。

JonnieJonnie2013/07/03 21:52An awnser from an expert! Thanks for contributing.

SavinSavin2013/07/05 09:26That in'htigss just what I've been looking for. Thanks! http://olnpkxamwdt.com [url=http://onbwaintypv.com]onbwaintypv[/url] [link=http://kszpezoiw.com]kszpezoiw[/link]

SavinSavin2013/07/05 09:26That in'htigss just what I've been looking for. Thanks! http://olnpkxamwdt.com [url=http://onbwaintypv.com]onbwaintypv[/url] [link=http://kszpezoiw.com]kszpezoiw[/link]

SavinSavin2013/07/05 09:26That in'htigss just what I've been looking for. Thanks! http://olnpkxamwdt.com [url=http://onbwaintypv.com]onbwaintypv[/url] [link=http://kszpezoiw.com]kszpezoiw[/link]

KidusKidus2013/07/07 12:05<a href=\"http://zhjfgnk.com\">Aritelcs</a> like this make life so much simpler.

KidusKidus2013/07/07 12:05<a href=\"http://zhjfgnk.com\">Aritelcs</a> like this make life so much simpler.

KidusKidus2013/07/07 12:05<a href=\"http://zhjfgnk.com\">Aritelcs</a> like this make life so much simpler.