Yes, I got my associationForeignKey and foreignKey entries reversed. I
fixed that but still the same.
I've also tried 'FundsDisciplines.discipline_id' => $discipline_id in
the conditions but that just makes Cake neglect to put that table in
the FROM clause, instead.
Ignore the "ask_" and "ASK" stuff: I wanted to simplify the names and
forgot to remove those.
On Sat, Mar 8, 2008 at 3:00 PM, b logica <[EMAIL PROTECTED]> wrote:
> Anyone? I've been hashing over this for hours now and the clue-fairy
> hasn't made an appearance yet. Ican't believe this is impossible to do
> with Cake so I must have something wrong somewhere.
>
>
>
>
> class Fund extends AppModel
> {
> var $name = 'Fund';
>
> var $useTable = 'funds';
> var $belongsTo = array('FundType');
>
> var $hasAndBelongsToMany = array(
> 'Discipline' => array(
> 'className' => 'Discipline',
> 'joinTable' => 'funds_disciplines',
> 'foreignKey' => 'discipline_id',
> 'associationForeignKey' => 'fund_id'
> )
> );
>
> }
>
> class AskFundType extends AppModel
> {
> var $name = 'AskFundType';
>
> var $useTable = 'fund_types';
> var $hasMany = 'Fund';
>
> }
>
> class Discipline extends AppModel
> {
> var $name = 'Discipline';
>
> var $hasAndBelongsToMany = array(
> 'AskFunder' => array(
> 'className' => 'AskFunder',
> 'joinTable' => 'ask_funders_disciplines',
> 'foreignKey' => 'ask_funder_id',
> 'associationForeignKey' => 'discipline_id'
> ),
> );
> }
>
>
> class FundsController extends AppController
> {
> var $name = 'Funds';
>
> var $paginate = array(
> 'limit' => 10,
> 'page' => 1,
> 'order'=>array('Fund.name' => 'ASC'),
> 'fields' => array(
> 'Fund.id',
> 'Fund.name',
> 'Fund.short_description'
> )
> );
>
> function listByDisciplineAndType()
> {
>
> ...
>
> $conditions = array(
> 'Fund.fund_type_id' => $fund_type_id,
> 'Discipline.id' => $discipline_id
> );
>
> $this->set('funds', $this->paginate('Fund', $conditions));
> }
> ...
>
> The really strange thing is, if i remove "'Discipline.id' =>
> $discipline_id" from the $conditions, I get:
>
> Array
> (
> [0] => Array
> (
> [Fund] => Array
> (
> [id] => 168
> [name] => THE_FUND_NAME
> [short_description] => THE_FUND_DESCRIPTION
> )
>
> [Discipline] => Array
> (
> )
> )
> ...
> )
>
> So, why is it that Cake refuses to select on disciplines but still
> adds the Discipline array (albeit empty) here? What the heck is going
> on?
>
>
>
>
>
> On Sat, Mar 8, 2008 at 2:10 AM, [EMAIL PROTECTED]
> <[EMAIL PROTECTED]> wrote:
> >
> > (Cake1.2, using Bindable)
> >
> > Just when I thought I had this figured out...
> >
> > I have 3 models:
> >
> > Fund => belongsTo (FundType), HABTM(Discipline)
> > FundType => hasMany(Fund)
> > Discipline => HABTM(Fund)
> >
> > FundsController:
> >
> > function listByDisciplineAndType()
> > {
> > $discipline_slug = $this->params['discipline_slug'];
> > $fund_type_slug = $this->params['fund_type_slug'];
> >
> > $fields = array('Fund.name', [Fund.etc...]);
> > $criteria = array(
> > 'conditions' => array(
> > 'Discipline.slug' => $discipline_slug,
> > 'FundType.slug' => $fund_type_slug
> > ),
> > 'restrict' => array(
> > 'Discipline(name, slug)',
> > 'FundType(name)'
> > )
> > );
> >
> > $this->set('funders', $this->Fund->find('all', $criteria,
> $fields));
> > }
> >
> > For some reason beyond my ken, Cake isn't selecting on Discipline
> > (I've also tried adding it to the $fields array).
> >
> > Can anyone point out out my error?
> >
> >
> > > >
> >
>
--~--~---------~--~----~------------~-------~--~----~
You received this message because you are subscribed to the Google Groups "Cake
PHP" group.
To post to this group, send email to [email protected]
To unsubscribe from this group, send email to [EMAIL PROTECTED]
For more options, visit this group at
http://groups.google.com/group/cake-php?hl=en
-~----------~----~----~----~------~----~------~--~---