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);
}