0

user_id を選択するときに、データのリストを取得する必要があります。つまり、user_id 1 を選択すると、user_id 1 に関連するすべてのデータ フィールドを取得する必要があります。これに制御ファイルを添付します。この問題で立ち往生しています。yii フレームワークは初めてですが、解決策を教えてください。

このためにコントロールとビューファイルを実装する方法を説明できますか?

ここに私のDBと制御ファイルがあります

CREATE TABLE IF NOT EXISTS `offer_company` (
    `id` int(60) NOT NULL AUTO_INCREMENT,
    `company_name` varchar(150) NOT NULL,
    `contact_detail` text NOT NULL,
    `User_id` int(10) NOT NULL,
    `created` varchar(60) NOT NULL,
    `modified` varchar(60) NOT NULL,
    `Active` varchar(25) NOT NULL,
    PRIMARY KEY (`id`),
    KEY `User_id` (`User_id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=39 ;

PHPコード

<?php

class OfferCompanyController extends Controller
{
/**
 * @var string the default layout for the views. Defaults to '//layouts/column2', meaning
 * using two-column layout. See 'protected/views/layouts/column2.php'.
 */
public $layout='//layouts/column2';

/**
 * @return array action filters
 */
public function filters()
{
    return array(
        'accessControl', // perform access control for CRUD operations
        'postOnly + delete', // we only allow deletion via POST request
    );
}

/**
 * Specifies the access control rules.
 * This method is used by the 'accessControl' filter.
 * @return array access control rules
 */
public function accessRules()
{
    return array(
        array('allow',  // allow all users to perform 'index' and 'view' actions
            'actions'=>array('index','view'),
            'users'=>array('*'),
        ),
        array('allow', // allow authenticated user to perform 'create' and 'update' actions
            'actions'=>array('create','update'),
            'users'=>array('@'),
        ),
        array('allow', // allow admin user to perform 'admin' and 'delete' actions
            'actions'=>array('admin','delete'),
            'users'=>array('admin'),
        ),
        array('deny',  // deny all users
            'users'=>array('*'),
        ),
    );
}

/**
 * Displays a particular model.
 * @param integer $id the ID of the model to be displayed
 */
public function actionView($id)
{
    $this->render('view',array(
        'model'=>$this->loadModel($id),
    ));
}

/**
 * Creates a new model.
 * If creation is successful, the browser will be redirected to the 'view' page.
 */
public function actionCreate()
{
    $model=new OfferCompany;

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['OfferCompany']))
    {
        $model->attributes=$_POST['OfferCompany'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('create',array(
        'model'=>$model,
    ));
}

/**
 * Updates a particular model.
 * If update is successful, the browser will be redirected to the 'view' page.
 * @param integer $id the ID of the model to be updated
 */
public function actionUpdate($id)
{
    $model=$this->loadModel($id);

    // Uncomment the following line if AJAX validation is needed
    // $this->performAjaxValidation($model);

    if(isset($_POST['OfferCompany']))
    {

        $model->User_id=Yii::app()->user->id;
        $model->attributes=$_POST['OfferCompany'];
        if($model->save())
            $this->redirect(array('view','id'=>$model->id));
    }

    $this->render('update',array(
        'model'=>$model,
    ));
}

/**
 * Deletes a particular model.
 * If deletion is successful, the browser will be redirected to the 'admin' page.
 * @param integer $id the ID of the model to be deleted
 */
public function actionDelete($id)
{
    $this->loadModel($id)->delete();

    // if AJAX request (triggered by deletion via admin grid view), we should not redirect the browser
    if(!isset($_GET['ajax']))
        $this->redirect(isset($_POST['returnUrl']) ? $_POST['returnUrl'] : array('admin'));
}

/**
 * Lists all models.
 */
public function actionIndex()
{
     $model = new OfferCompany('search');
        $model->unsetAttributes(); // clear any default values
        if (isset($_GET['OfferCompany']))
        $model->attributes = $_GET['OfferCompany'];

        $this->render('index', array(
        'model' => $model,
        ));
                }

/**
 * Manages all models.
 */
public function actionAdmin()
{
    $model=new OfferCompany('search');
    $model->unsetAttributes();  // clear any default values
    if(isset($_GET['OfferCompany']))
        $model->attributes=$_GET['OfferCompany'];

    $this->render('admin',array(
        'model'=>$model,
    ));
}

/**
 * Returns the data model based on the primary key given in the GET variable.
 * If the data model is not found, an HTTP exception will be raised.
 * @param integer $id the ID of the model to be loaded
 * @return OfferCompany the loaded model
 * @throws CHttpException
 */

/**
 * Performs the AJAX validation.
 * @param OfferCompany $model the model to be validated
 */
protected function performAjaxValidation($model)
{
    if(isset($_POST['ajax']) && $_POST['ajax']==='offer-company-form')
    {
        echo CActiveForm::validate($model);
        Yii::app()->end();
    }
}

}

4

1 に答える 1

2

このコードは、現在のユーザー user_id でテーブルからデータを取得するのに役立ちます:

$user_id = Yii::app()->user->name;    
$var = Model_name::model()->findByAttributes(array("user_id" => $user_id);

次のようなフィールドの値にアクセスできます。

$var->attributes['id'];

foreachby exampleを使用すると、ビューでも簡単に使用できます。幸運を

于 2013-08-19T06:05:46.143 に答える