javalzbin
- javalzbin 回答了问题 如何链接两个数据表进行查询
先var_dump出来看看是什么东西,看查询结果是否是自己期望的
- javalzbin 2016-04-08 已签到连续签到46天,获得了20个金钱
先创建连接对象
$connection = new \yii\db\Connection([ 'dsn' => $dsn, 'username' => $username, 'password' => $password, ]); $connection->open();
查询返回多行:
$command = $connection->createCommand('SELECT * FROM post'); $posts = $command->queryAll();
返回单行:
$command = $connection->createCommand('SELECT * FROM post WHERE id=1'); $post = $command->queryOne();
查询多行单值:
$command = $connection->createCommand('SELECT title FROM post'); $titles = $command->queryColumn();
查询标量值/计算值:
$command = $connection->createCommand('SELECT COUNT(*) FROM post'); $postCount = $command->queryScalar();
要养成先查文档的习惯:
http://www.yiichina.com/doc/guide/2.0/db-dao@yltianmei 我只是把文档的内容复制过来给而已,平时要多看看文档
- javalzbin 2016-04-07 已签到连续签到45天,获得了20个金钱
- javalzbin 回答了问题 Yii2怎么执行原生sql语句查询
先创建连接对象
$connection = new \yii\db\Connection([ 'dsn' => $dsn, 'username' => $username, 'password' => $password, ]); $connection->open();
查询返回多行:
$command = $connection->createCommand('SELECT * FROM post'); $posts = $command->queryAll();
返回单行:
$command = $connection->createCommand('SELECT * FROM post WHERE id=1'); $post = $command->queryOne();
查询多行单值:
$command = $connection->createCommand('SELECT title FROM post'); $titles = $command->queryColumn();
查询标量值/计算值:
$command = $connection->createCommand('SELECT COUNT(*) FROM post'); $postCount = $command->queryScalar();
要养成先查文档的习惯:
http://www.yiichina.com/doc/guide/2.0/db-dao ActiveRecord有个getDb方法,你可以重写他
public static function getDb() { return Yii::$app->getDb(); }
其他它最终调用的是Application的getDb方法
public function getDb() { return $this->get('db'); }
所以,你可以根据你自己的业务,然后重写这个方法,返回你想要的db。
最好自己写个类,比如:class BackBaseActiveRecord extends ActiveRecord{ }
然后让你所有的model都继承BackBaseActiveRecord,这样你在BackBaseActiveRecord中重写getDb方法
你试试看行不行
@legend 可以,端口区分就行
个人感觉逻辑不太对,登录认证应该在控制器中就控制了,而不是应该在模型中去判断,请求肯定是先到控制器,然后对应的action中进行处理,action负责加载一个数据模型,一般是从数据库中加载。那么,如果这个用户没有登录,应该在加载模型之前就判断好
ActiveRecord有个getDb方法,你可以重写他
public static function getDb() { return Yii::$app->getDb(); }
其他它最终调用的是Application的getDb方法
public function getDb() { return $this->get('db'); }
所以,你可以根据你自己的业务,然后重写这个方法,返回你想要的db。
最好自己写个类,比如:class BackBaseActiveRecord extends ActiveRecord{ }
然后让你所有的model都继承BackBaseActiveRecord,这样你在BackBaseActiveRecord中重写getDb方法
你试试看行不行
@legend 一个mysql服务器,两个数据库,一般不会这么做,测试可以,但是也是一台服务器两个myslq服务。
集群也是两台机器,两个mysql服务,然后可以配置主从,当你在主库上进行写操作的时候,主会自动同步到从库中,从而实现读写分离。搭建集群的教程网上很多,集群的方式也很多,根据自身的业务,选择一个合适自己的集群方案,最后提一点,无论哪种集群,为了避免节点出现脑裂而破坏数据,最好是奇数台服务器,也就是至少3台服务器做集群