Kom ihåg mig?
Home Menu

Menu


CakePHP + query + joining tables

 
Ämnesverktyg Visningsalternativ
Oläst 2009-08-06, 21:36 #1
robert.liljedahls avatar
robert.liljedahl robert.liljedahl är inte uppkopplad
Medlem
 
Reg.datum: Feb 2006
Inlägg: 143
robert.liljedahl robert.liljedahl är inte uppkopplad
Medlem
robert.liljedahls avatar
 
Reg.datum: Feb 2006
Inlägg: 143
Hejsan. För de av er som som vet vem jag är så vet ni att det i huvudsak är en sak jag kan; Frontend. HTML+CSS+JS. Nu har tydligen min situation förändrats och jag ska lära mig CakePHP -utan- någon ordentlig PHP-/OOP-/MySQL-bakgrund. Alltså ska en gammal hund läras sittas. Fast lite bakvänt.
De var länge sedan jag kände mig såhär bortkommen och vilsen, samtidigt som jag på något sjukt sätt njuter lite av det.

Här min situation, och jag skulle bli otroligt tacksam för hjälp.

Article hasAndBelongsToMany Category, Location
Paper hasAndBelongsToMany Category, Location
Article belongsTo Paper
Paper hasMany Article

Joining tables:
articles_categories
articles_locations
categories_papers
locations_papers

Jag vill ändra $cond (eller göra de ändringar som är nödvändiga) så att jag får alla artiklar som:
har MINST en Category som matchar någon av Papers categories
OCH
har MINST en Location som matchar någon av Papers locations.

Ni kan ignorera det som just nu står i $cond.

$paper['Category'] innehåller följande 'categories' för Paper:
Kod:
Array
(
  [0] => Array
    (
      [id] => 1
      [title] => Turism
      [slug] => Turism
      [parent_id] =>
      [lft] => 1
      [rght] => 2
    )
 
  [1] => Array
    (
      [id] => 2
      [title] => Fritid
      [slug] => Fritid
      [parent_id] =>
      [lft] => 23
      [rght] => 24
    )
    ....
)
$paper['Location'] innehåller följande 'locations' för Paper:
Kod:
 
Array
(
  [0] => Array
    (
      [id] => 1
      [title] => Blekinge
      [slug] => blekinge
      [parent_id] =>
      [lft] => 1
      [rght] => 2
    )
 
  [1] => Array
    (
      [id] => 3
      [title] => Dalarna
      [slug] => dalarna
      [parent_id] =>
      [lft] => 25
      [rght] => 26
    )
    ...
)
ArticlesController:
Kod:
function archive($paper = null) {
    if (!$paper) {
      $this->Session->setFlash(__('Invalid Paper.', true));
      $this->redirect(array('action'=>'index'));
    }
    
    $paper = $this->Article->Paper->findBySlug($paper);
    $this->Article->recursive = 0;
    $cond = array("Article.paper_id" => $paper['Paper']['id']);
    
    $this->set('articles', $this->paginate('Article', $cond));
  }
Jag har suttit bokstavligen hela dagen och försökt lösa det här. Har provat en massa olika saker. Har läst om Ad-hoc, att använda bindModel mm.. men jag får inte till det.

Tack på förhand.
/Robert
robert.liljedahl är inte uppkopplad   Svara med citatSvara med citat
 


Aktiva användare som för närvarande tittar på det här ämnet: 1 (0 medlemmar och 1 gäster)
 

Regler för att posta
Du får inte posta nya ämnen
Du får inte posta svar
Du får inte posta bifogade filer
Du får inte redigera dina inlägg

BB-kod är
Smilies är
[IMG]-kod är
HTML-kod är av

Forumhopp


Alla tider är GMT +2. Klockan är nu 16:41.

Programvara från: vBulletin® Version 3.8.2
Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
Svensk översättning av: Anders Pettersson
 
Copyright © 2017