2017-08-24 12:00:35 2401次浏览 4条回答 0 悬赏 10 金钱

ll.png

这里输出的内容是订单表,这个的商品的名称是要在商品表中获取到的?请问yii2怎么才能查询出商品的名称??
订单表dd.png
商品表ss.png

最佳答案

  • 林小陌 发布于 2017-08-24 14:40 举报

    这是我用yii2 AR模式写的一个联查,希望有用。

        $request = yii::$app->request;
        $p_id = $request->get('p_id');
        $model = new Company_jobs();
    
        $job = $model -> find()
               -> join('inner join', 'recruit_company as rc', 'rc.c_id = recruit_jobs.c_id')
               -> select('*')
               -> where('recruit_jobs.p_id = '.$p_id)
               -> asArray()
               -> one();
    
        return $this->render('job_info',['jobs'=>$job]);
    
    2 条回复
    回复于 2017-08-24 14:54 回复

    你这是把查询写进模型中了吗? join里面的参数都是什么意思啊,看不懂啊

    回复于 2017-08-24 15:09 回复

    这是在控制器里面写的,join的参数 第一个(连表方式,个人觉得可有可无,因为查不来的数据都一样),第二个(你要连哪张表) 第三个(条件,也就是普通sql中on后面的) select(你要查询的数据)

  • 回答于 2017-08-24 12:09 举报

    $this->hasOne(model::className(),['pid'=>'id']);

    10 条回复
    回复于 2017-08-24 12:10 回复

    控制器里面直接这样写吗? 模型中不需要处理吗??

    回复于 2017-08-24 12:19 回复

    在模型里面写 控制器里关联查询就可以了

    回复于 2017-08-24 12:28 回复

    模型这样写你帮我看一下对不对??
    <?php
    namespace app\models;

    use app_models_TradeScoreOrder;

    class TradeScoreOrder extends _TradeScoreOrder {

    static $model=false;
    static function model(){
        $class= get_class();
        if(self::$model==false){
            self::$model = new $class();
        }
        return self::$model;
    }
    
    static function _create_order_id(){
        return date('YmdHis').rand(100000,999999);
    }
    public function getTradeScoreProduct(){
        return $this->hasOne(TradeScoreProduct::ScoreController(),['pid'=>'id']);
    }
    

    }

    回复于 2017-08-24 12:30 回复

    控制器的写法

    /**
     * 我的订单
     */
    public function actionOrder(){
    
        $products = TradeScoreOrder::find()->joinWith(['trade_score_product'])->orderBy('id desc');
    

    // $products = TradeScoreOrder::find()->orderBy('id desc');

        $pages = new Pagination(['totalCount'=> $products -> count(),'pageSize' => '20']);
        $result = $products -> offset($pages -> offset)
            -> limit($pages->limit)
            -> all();
    
        return $this->render('order',['result'=>$result,'pages'=>$pages]);
    }
    
    回复于 2017-08-24 14:16 回复

    嗯是的·······

    回复于 2017-08-24 14:51 回复

    报错啊,这样写

    回复于 2017-08-24 15:24 回复

    下划线报错?

    回复于 2017-08-24 16:18 回复

    Invalid Parameter – yii\base\InvalidParamException

    app\models\TradeScoreOrder has no relation named "trade_score_product".

    Caused by: Unknown Method – yii\base\UnknownMethodException

    Calling unknown method: app\models\TradeScoreOrder::gettrade_score_product()

    in D:\wamp64\www\8080\vendor\yiisoft\yii2\base\Component.php at line 290

    回复于 2017-08-24 16:37 回复

    报的是没有关联的错 ,

    回复于 2017-08-24 17:49 回复

    关联的名字错了

  • 回答于 2017-08-25 14:23 举报

    方法两种,leftjoin(表名。表明id,关联id)
    joinwith(模型方法名)
    模型方法
    public function get名()
    {
    return $this->hasOne()/hasMany();
    }

  • 回答于 2017-08-29 17:45 举报

    水一贴弄点分好提问= =

您需要登录后才可以回答。登录 | 立即注册
布莱克
助理

布莱克

注册时间:2017-07-20
最后登录:2018-05-07
在线时长:5小时37分
  • 粉丝1
  • 金钱65
  • 威望0
  • 积分115

热门问题