J'ai encore un autre problème. J'essaye de joindre 2 tables afin que je puisse tirer des données des deux. Je suis nouveau à TableGateway et j'ai des problèmes à trouver la même situation. J'ai une page qui va tirer les blogs par état et j'ai aussi une table d'état. Je veux les joindre en utilisant state_id et montrer "state" de la table d'état sur la page. Voici ce que j'ai. Je ne sais pas si j'utilise même le bon code!Pourquoi cette erreur 1066 apparaît à partir de l'état de jointure
Modèle - De StateTable:
public function getState($state)
{
$sqlSelect = $this->tableGateway->getSql()->select();
$sqlSelect->columns(array('state_id'));
$sqlSelect->join('states', 'states.state_id = state_id', array('state'), 'inner');
$statement = $this->tableGateway->getSql()->prepareStatementForSqlObject($sqlSelect);
$resultSet = $statement->execute();
return $resultSet;
}
Modèle de PostTable:
public function getbystate($state_id)
{
$state_id = (int) $state_id;
$rowset = $this->tableGateway->select(array('state_id' => $state_id));
return $rowset;
}
Action de contrôleur:
public function ListAction()
{
$state_id = $this->params()->fromRoute('state_id');
$state = $this->params('state');
$list = $this->getPostsTable()->getbystate($state_id);
$states = $this->getStatesTable()->getState($state);
$view = new ViewModel(array(
'list' => $list,
'states' => $states,
));
return $view;
}
Mise à jour 08:41 EST 06/06/2017
Je mets la jointure dans le module Posts au lieu de dans le States Model. Je me suis débarrassé des erreurs mais j'ai encore besoin de savoir comment montrer l'état. Tout ce qui précède est le même sauf qu'il réside dans le module posts.
Le "View" est inférieure à - il des erreurs avis: Undefined property: Zend \ Db \ Adapter \ Driver \ Aop \ Résultat :: $ state dans/var/www/html/module/Blog/view/blog/list.phtml en ligne 6
Vue:
$title = 'My Blog';
$this->headTitle($title);
?>
<h1><?php echo $this->escapeHtml($title); ?></h1>
<td><?php echo $this->escapeHtml($states->state);?></td>
<table class="table">
<tr>
<th>Title</th>
<th>View</th>
<th>Comments</th>
<th>Post Date</th>
</tr>
<?php foreach ($list as $posts) : ?>
<tr>
<td>
<a href="/Blog/view/<?php echo $this->escapeHtml($posts->post_id);?>">
<?php echo $this->escapeHtml($posts->post_title);?>
</a>
</td>
<td><?php echo $this->escapeHtml($posts->num_views);?></td>
<td><?php echo $this->escapeHtml($posts->num_comments);?></td>
<td><?php echo $this->escapeHtml($posts->post_date);?></td>
</tr>
<?php endforeach; ?>
</table>
tables Ajouté 12h01 EST 07/06/2017 Poster Tableau:
CREATE TABLE `posts` (
`post_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`state_id` smallint(6) DEFAULT NULL,
`created_user_id` int(11) DEFAULT NULL,
`post_title` varchar(255) NOT NULL,
`post_date` datetime DEFAULT NULL,
`is_active` tinyint(4) NOT NULL,
`status` enum('deleted','draft','inactive','active') DEFAULT 'inactive',
`activate_date` datetime DEFAULT NULL,
`is_hot` tinyint(4) DEFAULT '0',
`ordering` int(11) DEFAULT '0',
`num_views` int(11) DEFAULT '0',
`allow_comment` tinyint(4) DEFAULT NULL,
`num_comments` int(11) DEFAULT '0',
`picLink` varchar(50) DEFAULT NULL,
`description` varchar(1000) DEFAULT NULL,
`food` enum('Yes',' No') DEFAULT NULL,
PRIMARY KEY (`post_id`),
KEY `idx_latest` (`status`,`activate_date`),
KEY `idx_latest_category` (`state_id`,`status`,`activate_date`),
KEY `idx_most_commented` (`state_id`,`status`,`num_comments`) USING BTREE,
KEY `idx_most_viewed` (`state_id`,`status`,`num_views`) USING BTREE,
KEY `idx_most_viewed_2` (`status`,`num_views`),
KEY `idx_created_user` (`created_user_id`,`post_id`)
États Tableau:
CREATE TABLE `states` (
`state_id` int(10) unsigned NOT NULL AUTO_INCREMENT,
`state` varchar(45) NOT NULL,
PRIMARY KEY (`state_id`)
) ENGINE=InnoDB AUTO_INCREMENT=51 DEFAULT CHARSET=utf8;
Votre requête sql pour joindre deux tables n'est pas correcte. Seriez-vous capable d'afficher votre table «blog» et «state» s'il vous plaît? – unclexo
@ J.Sajeeb J'ai ajouté les tableaux à la publication.Peut-être que l'indexation n'est pas tout à fait correcte non plus. Quand j'ai fait un taudis j'ai été surpris à toutes les clés. Je ne me souviens pas de faire tout ça. Merci. –