hasMany ------------------------- (一对多关系)比如 一个人有多个订单
hasOne --------------------------(一对一关系)比如一个订单只能能一个人购买
下面是代码
创建连个表
CREATE TABLE `customer` (
`id` int(10) NOT NULL AUTO_INCREMENT, `customer_name` varchar(255) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=3 DEFAULT CHARSET=utf8;CREATE TABLE `order` (
`id` int(10) NOT NULL AUTO_INCREMENT, `order_name` varchar(255) DEFAULT NULL, `customer_id` int(10) DEFAULT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB AUTO_INCREMENT=5 DEFAULT CHARSET=utf8;配置两个模型
Order.php
class Order extends \yii\db\ActiveRecord{
public function getCustomer(){ return $this->hasOne(Customer::className(), ['id' => 'customer_id']); }}
Customer.php
namespace app\models;
use app\models\Order; use Yii; class Customer extends \yii\db\ActiveRecord{ public function getOrders(){ return $this->hasMany(Order::className(), ['customer_id' => 'id']); } }控制器的代码
HasController.php
public function actionIndex(){
//一对多查询 $id = 1; $customer = Customer::findOne($id); $list = $customer->getOrders()->asArray()->all(); //一对一查询 $order = Order::findOne(['id'=>1]); $customer = $order->getCustomer()->asArray()->one(); print_r($customer); }