2015-12-23 14:10:58 7073次浏览 3条回答 3 悬赏 15 金钱

我想实现的是一个model里面可以随意查没有建model的表,比如Yii::$app->db->createCommand() 就可以实现,但是我想用ActiveRecord实现,但是ActiveRecord的文档给的标准是model里面:

/**
* @inheritdoc
*/
public static function tableName()
{
	return '{tablename}';
}

/**
* @return \yii\db\Connection the database connection used by this AR class.
*/
public static function getDb()
{
	return \Yii::$app->db; 
}

这样的话就只能查询一张表了,如果要查询别的还要再建立model,我想问的是有没有不建model的方法?

  • 回答于 2015-12-23 14:16 举报

    实体的查询,必须要建model的吧

  • 回答于 2015-12-23 14:19 举报
    
    $customers = Customer::find()
        ->select('customer.*')
        ->leftJoin('order', '`order`.`customer_id` = `customer`.`id`')
        ->where(['order.status' => Order::STATUS_ACTIVE])
        ->with('orders')
        ->all();
    
    

    http://www.yiiframework.com/doc-2.0/guide-db-active-record.html#relational-data 多看文档

    3 条回复
    回复于 2015-12-23 14:25 回复

    我不是说的表连接,我是说的像这样

    $command = $connection->createCommand('SELECT * FROM post');
    $posts = $command->queryAll(); $command = $connection->createCommand('SELECT * FROM post1 where id =1');
    $posts = $command->queryAll();
    .....
    

    随意的去查询任何一张表

    回复于 2015-12-23 18:49 回复

    那为何还要建立model呢,直接创建一个helper吧

    回复于 2015-12-24 10:21 回复

    我目的不是建model,目的是用ActiveRecord,我想问的是不建model怎么可以用ActiveRecord?

  • 回答于 2015-12-24 11:24 举报

    Model : Any.php

    namespace common\models;
    
    use Yii;
    use yii\db\ActiveRecord;
    
    class Any extends ActiveRecord {
        
        public static $tableName;
    
        public static function tableName()
        {
            return self::$tableName;
        }
    
        public static function find($tableName=NUll) {
            self::$tableName = $tableName;
            return new AnyQuery(get_called_class());
        }
    }
    
    

    QUERY : AnyQuery.php

    
    namespace common\models;
    
    
    use yii\db\ActiveQuery;
    
    class AnyQuery extends ActiveQuery {
        // ...
    }
    

    controller

    $query = Any::find('globalid')->all();
    var_dump($query);
    
您需要登录后才可以回答。登录 | 立即注册
孤寡老人
职场新人

孤寡老人

注册时间:2015-11-09
最后登录:2016-06-03
在线时长:6小时58分
  • 粉丝2
  • 金钱10
  • 威望0
  • 积分70

热门问题