2013-12-07 2 views
0

Я только что создал модель и CRUD для базы данных mysql.Yii CRUD Индексные элементы фильтрации по позиции db

CREATE TABLE IF NOT EXISTS `issue` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `title` varchar(255) NOT NULL, 
    `description` text NOT NULL, 
    `priority` varchar(255) DEFAULT NULL, 
    `status` varchar(255) DEFAULT NULL, 
    `user` varchar(255) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=InnoDB DEFAULT; 

Это все хорошо и денди, но люди могут видеть список друг друга на г = выпуск/индекса index.php?. Я не хочу, чтобы это произошло, я хочу отфильтровать список индексов для поиска всех сообщений пользователя и показывать только его сообщения.

Как я могу это сделать?

EDIT1:

Это _view, где список получает показано всем:

<?php 
/* @var $this IssueController */ 
/* @var $data Issue */ 
?> 

<div class="view"> 

<b><?php echo CHtml::encode($data->getAttributeLabel('id')); ?>:</b> 
<?php echo CHtml::link(CHtml::encode($data->id), array('view', 'id'=>$data->id)); ?> 
<br /> 

<b><?php echo CHtml::encode($data->getAttributeLabel('title')); ?>:</b> 
<?php echo CHtml::encode($data->title); ?> 
<br /> 

<b><?php echo CHtml::encode($data->getAttributeLabel('description')); ?>:</b> 
<?php echo CHtml::encode($data->description); ?> 
<br /> 

<b><?php echo CHtml::encode($data->getAttributeLabel('priority')); ?>:</b> 
<?php echo CHtml::encode($data->priority); ?> 
<br /> 

<b><?php echo CHtml::encode($data->getAttributeLabel('status')); ?>:</b> 
<?php echo CHtml::encode($data->status); ?> 
<br /> 

<b><?php echo CHtml::encode($data->getAttributeLabel('user')); ?>:</b> 
<?php echo CHtml::encode($data->user); ?> 
<br /> 


</div> 

EDIT2:

Я вставил код, приведенный ниже, но я получаю если у меня есть действующий пользователь, у которого есть сообщение:

<b><?php echo CHtml::encode($data->findAll('user LIKE \''.Yii::app()->user->name.'\'', array('title'=>$data->title))); ?>:</b> 
<?php echo CHtml::encode($data->findAll('user ='.Yii::app()->user->name, array('title'=>$data->title))); ?> 
<br /> 

Ошибка:

htmlspecialchars() expects parameter 1 to be string, array given 

EDIT3:

Я просто понял, что моя логика не так, если пользователь имеет более чем 1 сообщение это не будет делать, мне нужно использовать Еогеасп для извлечения значения и эхо их, но все же не уверены, как это сделать.

EDIT4 решаемые IT

Вот мой новый _view:

<?php $foundAll=$data->findAllByAttributes(array('title'=>$data->title, 'description'=>$data->description, 'priority'=>$data->priority, 'status'=>$data->status, 'user'=>Yii::app()->user->name));//,'user LIKE '.'\''.Yii::app()->user->name.'\''); 

//then you need use like 
foreach($foundAll As $found) 
{ 
    echo "<b>".$data->getAttributeLabel('id')."</b>: "; 
    echo CHtml::link(CHtml::encode($found['id']), array('view', 'id'=>$found['id'])); 
    echo "<br />"; 

    //here you need to use array, like this $found['userId']. 
    echo "<b>".$data->getAttributeLabel('title')."</b>: "; 
    echo "".$found['title'].""; 
    echo "<br />"; 

    echo "<b>".$data->getAttributeLabel('description')."</b>: "; 
    echo "".$found['description'].""; 
    echo "<br />"; 

    echo "<b>".$data->getAttributeLabel('priority')."</b>: "; 
    echo "".$found['priority'].""; 
    echo "<br />"; 

    echo "<b>".$data->getAttributeLabel('status')."</b>: "; 
    echo "".$found['status'].""; 
    echo "<br />"; 
} 
?> 
+0

findByAttributes (массив ('пользователь' => 'hisName') ?? http://www.yiiframework.com /forum/index.php/topic/21178-findbyattributes-example/ –

+0

Я немного потерял место для его вставки, по индексу это то, где он вызывается: ' widget ('zii.widgets.CListView', array ( \t 'dataProvider' => $ dataProvider, \t 'itemVi ew '=>' _ view ', )); ?> ' –

ответ

0

Вы должны проверить контроллер (IssueController) или модель (выпуск) и найти определение переменной $ DataProvider. Это выглядит следующим образом:

$dataProvider=new CActiveDataProvider('Issue'); 

Просто измените его:

$criteria = new CDbCriteria(); 
$criteria->addSearchCondition('user', Yii::app()->user->name); 
$dataProvider=new CActiveDataProvider('Issue', 'criteria'=>$criteria); 
Смежные вопросы