yii2那些事

一、要点:

1、数据库查询采用all()的方法,则需要for循环来取值。

2、查询指定字段:$model_Member = Member::find()->select('nickname')->where([ 'id' => $student_id ])->asArray()->one();

2、多表关联查询:https://www.imooc.com/video/7852  简洁明了,深入浅出。需要注意:结果缓存问题及多次查询问题

HelloController

<?php
namespace app\controllers;
use yii\web\Controller;
use app\models\Test;
use app\models\Customer;
use app\models\Order;

class HelloController extends Controller{
	public function actionIndex(){
		//根据顾客查询订单信息
		$customer = Customer::find()->where(['name'=>'zhangsan'])->one();
		//方法一
		$order = $customer->hasMany(Order::className(),['customer_id' =>'id'])->asArray()->all();
		//方法二
		$order = $customer->getOrders();
		//方法三
		$orders = $customer->orders;

		//根据订单查询顾客的信息
		$order = Order:a:find()->where(['id'=>1])->one();
		$customer = $order->customer;

		print_r($customer);

	}
}

 

Customer.php

<?php
namespace app\models;
use yii\db\ActiveRecord;

class Customer extends ActiveRecord{
	
	//帮助顾客获取订单信息
	public funtion getOrders(){
		$orders = $this->hasMany(Order::className(),['customer_id'=>'id'])->asArray();
		return $orders;
	}
}

Order.php

<?php
namespace app\models;
use yii\db\ActiveRecord;

class Order extends ActiveRecord{
	
	//根据订单查询顾客的信息
	public funtion getCustomer(){
		return $this->hasOne(Customer::className(),['id'=>'customer_id'])->asArray();

	}
}

二、常用查询方法

Customer::find()->one();    此方法返回一条数据的对象;

Customer::find()->all();    此方法返回所有数据的对象;

Customer::find()->count();    此方法返回记录的数量;

Customer::find()->average();    此方法返回指定列的平均值;

Customer::find()->min();    此方法返回指定列的最小值 ;

Customer::find()->max();    此方法返回指定列的最大值 ;

Customer::find()->scalar();    此方法返回值的第一行第一列的查询结果;

Customer::find()->column();    此方法返回查询结果中的第一列的值;

Customer::find()->exists();    此方法返回一个值指示是否包含查询结果的数据行;

Customer::find()->batch(10);  每次取10条数据 

Customer::find()->each(10);  每次取10条数据,迭代查询 

//根据sql语句查询:查询name=test的客户
Customer::model()->findAllBySql("select * from customer where name = test"); 

//根据主键查询:查询主键值为1的数据
Customer::model()->findByPk(1); 

//根据条件查询(该方法是根据条件查询一个集合,可以是多个条件,把条件放到数组里面) 
Customer::model()->findAllByAttributes(['username'=>'admin']); 

//子查询
$subQuery = (new Query())->select('COUNT(*)')->from('customer');
// SELECT `id`, (SELECT COUNT(*) FROM `customer`) AS `count` FROM `customer`
$query = (new Query())->select(['id', 'count' => $subQuery])->from('customer');

//关联查询:查询客户表(customer)关联订单表(orders),条件是status=1,客户id为1,从查询结果的第5条开始,查询10条数据
$data = (new Query())
    ->select('*')
    ->from('customer')
    ->join('LEFT JOIN','orders','customer.id = orders.customer_id')
    ->where(['status'=>'1','customer.id'=>'1'])
    ->offset(5)
    ->limit(10)
    ->all()

 

最近用yii2新做网站:

湖南漂亮妈妈产后修复:http://www.plmmchxf.com/

澳门君天集团:http://www.macaojt.com/

城启国际(香港)设计有限公司:http://www.citykeyhk.com/

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值