加载条件 - Phpactiverecord
问题描述:
我觉得我'击中phpactiverecord的限制,但需要澄清:加载条件 - Phpactiverecord
$data = array(
'conditions' => array(
'still_in_contest' => 1,
'contest_month' => $month,
'`genres`.`id`' => $genre, # THIS is the issue.. and an awkward "hack" that
# I was hoping would work..
)
'include' => array('song' => array('artist','genre')),
'joins' => array('
LEFT JOIN songs
ON (songs.id = contest_submissions.song_id)
LEFT JOIN genres
ON (genres.id = songs.genre_id)',
),
是不可能简单地添加类似genres.id
到查询?
phpactiverecord
是建立查询为:
WHERE `contest_submissions`.`genres`.`id`=?
如果有一些其他的方式还从没有对我自己做的一切其他类似查询自动加载中受益?
编辑: 我的解决方案现在已经被刚才修改phpactiverecord的SQLBuilder类的核心不追加表的名称,如果有在关键点...
EDIT2:
我尝试了你的解决方案Nanne,但它没有解决问题。 Phpactiverecord最终将表名添加到所有内容中。 :(
$genre = 1
if($genre)
$data['conditions']['genres.id'] = $genre;
$data['conditions']['contest_submissions.still_in_contest'] = 1;
$data['conditions']['contest_submissions.contest_month'] = $month;
它制定了前面,因为我一直在我砍在我有没有正确格式化条件
EDIT3:?
是的..是我没有格式它错误地
答
你可以这样做: 我没有测试过,因为我没有时间重新创建表格,但这是我目前使用的:它只是在您的条件下使用的不同语法。
$join = "LEFT JOIN songs ON (songs.id = contest_submissions.song_id)
LEFT JOIN genres ON (genres.id = songs.genre_id)";
$models = \Models\YourModel::all(array(
'joins' => $join,
'conditions' => array('contest_submissions.still_in_contest = ?
AND contest_submissions.contest_month = ?
AND genres.id = ?',
1,
$month,
$genre)));
(我希望我得到了阵列/支架右侧的表名和金额:)
天才]! 我很高兴你来这里帮助phpactiverecord = P 你是否是开发人员之一?我会尝试它,并删除我对核心类的更改,以查看会发生什么 – Anther 2012-03-05 15:58:54
不是,而是一个活动用户(和活动的SO用户)。我希望能在这个话题上得到一些大量的讨论,因为phpAR的论坛没有被太多的人访问:)(并且我更喜欢QA平台) – Nanne 2012-03-05 16:02:02
我看到了需要做出的改变,但我会对我的黑客固执,因为我确实希望能够使用数组轻松地将动态需要的字段添加到条件中,而不是使用字符串连接和数组推送。这确实是这个问题的正确答案! – Anther 2012-03-05 16:33:49