Quantcast
Channel: Grafikart | Derniers Sujets du forum
Viewing all articles
Browse latest Browse all 13822

Comment puis faire une relation entre 3 tables

$
0
0
Bonjour à tous,

J'ai un code qui m'affoiche les Tags qui se trouvent dans la table Tgas
class TagsController extends AppController{


	// Dans le tuto, il utilise sidebar au lieux de categoriesList
	function tagsList(){
		//$this->loadModel('PageTag');
		return $this->Tag->find('all',array('order'=>'name ASC','conditions'=>array('Tag.count >= 0')));
	}
}

Le problème qui se pose, c'est que lorsqu'une page est offline, le Tag associé à cette page s'affiche et je ne le veux pas.

Ma table Tags à trois champs : id, name, count

J'ai une table de laisons

PahesTags qui a 3 champs : id, page_id, tag_id

Et j'ai une table pour mes pages, ou j'ai un champs "online"

J'aimerais, dans le premier code, ajouter une conditions, qui va regarder dans la table page, si le champs "offiline* est à 1, comme ceci
class TagsController extends AppController{


	// Dans le tuto, il utilise sidebar au lieux de categoriesList
	function tagsList(){
		//$this->loadModel('PageTag');
		return $this->Tag->find('all',array('order'=>'name ASC','conditions'=>array('Tag.count >= 0','Page.online' => 1)));
	}
}

Mais évidement ca ne marche pas et j'aimerais savoir comment, je peux modifier mes modeles Tag, PageTag et page.

Pour le moement, j'ai ceci dans le modele Tag:
<?php
class Tag extends AppModel{

	public $hasOne = 'PageTag';
	
}

Dans mon modele PageTag, j'ai ceci:
<?php
class PageTag extends AppModel{
	var $useTable = "pages_tags";
	public $actsAs = array('containable');
	public $belongsTo = array(
		'Page',
		'Tag' => array(
			'counterCache' => 'count'
			)
		);

	public function afterDelete(){
		// Efface tous les tag qui ne sont plus associé
		$this->Tag->deleteAll(array(
			'count' => 0
			));
	}
}

et mon modele Page.php, j'ai ceci:
	public $actsAs = array('containable','Tree');
	// Création d'un liasons
	// DECI EFFACERA LE CAMPS DU TABLEAU MEDIAS ASSOCIE AU POST_ID
	// Nous sommes dans les post. Si dessous, il va associé l'id du post, automatiquement avec le champs post_id du tableau medias.
	

	public $hasMany =array(
		#Commenté le 13.12.2013 car Media plus utilisé
		#'Media' => array(
		#	'dependent' => true
		#),
		'PageTag'
		);
	
	/*
	// Permet d'enregistrer dans la table Tag et Categorie, le nombre de Post qui sont enregistré avec la categorie ou un tag
	public $belongsTo = array(
			'Category' => array(
				'counterCache' => array(
					'page_count' => array(
						'Page.online' => 1,
						'Page.created <= NOW()'
						)
				)
			)
	);
	*/

	public $hasAndBelongsToMany = array('Tag');

	// Added for the search module
	//public $belongsTo = array('Search');


	//MyQL Arrete de faire des requetes recursive
	public $recursive = -1;

Pouvez-vous m'aider a me dire comment je peux fair een sorte que le champs Page.offilne est vérifier?
Je vous remercie

Viewing all articles
Browse latest Browse all 13822

Trending Articles