nom*_*mie 4 php mysql codeigniter codeigniter-datamapper
我是新手,需要一些帮助.我有2张桌子......
CREATE TABLE `vehicles` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`vehicle_type` varchar(50) NOT NULL,
`vehicle_make` varchar(50) NOT NULL,
`vehicle_model` varchar(50) NOT NULL,
`vehicle_year` varchar(50) NOT NULL,
`vin` varchar(50) NOT NULL,
`registered_state` varchar(10) NOT NULL,
`license_plate` varchar(20) NOT NULL,
`insurrance_policy` varchar(50) NOT NULL,
PRIMARY KEY(`id`)
)
ENGINE=INNODB;
CREATE TABLE `drivers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`first_name` varchar(50) NOT NULL,
`last_name` varchar(50) NOT NULL,
`dob` date NOT NULL,
`ss_no` varchar(50) NOT NULL,
`address` varchar(100) NOT NULL,
`city` varchar(50) NOT NULL,
`state` varchar(10) NOT NULL,
`zip_code` int(5) NOT NULL,
`cell_phone` varchar(50) NOT NULL,
`home_phone` varchar(50),
`dl_no` varchar(50) NOT NULL,
`dl_state` varchar(10) NOT NULL,
`dl_exp` date NOT NULL,
`dl_2_no` varchar(50) NOT NULL,
`dl_2_state` varchar(10) NOT NULL,
`dl_2_exp` date NOT NULL,
`vehicle_id` int(11) NOT NULL DEFAULT '0',
PRIMARY KEY(`id`),
CONSTRAINT `Ref_01` FOREIGN KEY (`vehicle_id`)
REFERENCES `vehicles`(`id`)
ON DELETE NO ACTION
ON UPDATE NO ACTION
)
ENGINE=INNODB;
SET FOREIGN_KEY_CHECKS=1;
Run Code Online (Sandbox Code Playgroud)
你可以看到每个司机都有一辆与他相关的车.如何在对象中查询与他相关联的每个驾驶员和每辆车.
我可以让所有的司机使用它.
$d = new Driver();
$data['driver'] = $d->get();
Run Code Online (Sandbox Code Playgroud)
在我的司机模型中
var $has_one = array('vehicle');
Run Code Online (Sandbox Code Playgroud)
我想获取$ data ['driver']中的所有记录
假设您有一对一的关系,这是一种简单的方法:
在模型驱动程序中:
var $has_one = array('vehicle');
Run Code Online (Sandbox Code Playgroud)
在您的模型车辆中:
var $has_one = array('driver');
Run Code Online (Sandbox Code Playgroud)
获得车辆及其驾驶员:
$v = new Vehicle();
$v->include_related('driver')->get();
Run Code Online (Sandbox Code Playgroud)
include_related()只适用于$has_one相关型号.
现在,驱动程序的属性存储在$v前缀中driver_.要访问车辆的驾驶员列:
echo $v->driver_first_name;
echo $v->driver_last_name;
Run Code Online (Sandbox Code Playgroud)
或者,您可以在每次访问车辆时自动加载驱动程序:
// In Vehicle
var $auto_populate_has_one = TRUE;
Run Code Online (Sandbox Code Playgroud)
对于has-many关系,您可以这样做:
$d = new Driver();
$d->get_by_id($id);// Get a driver by id
foreach ($d->vehicle->get() as $car)
{
// Print all this Driver's vehicles
echo $car->vehicle_model;
}
Run Code Online (Sandbox Code Playgroud)
这只是一种方法.有可能在Datamapper中访问关系的方法,最好的办法是彻底阅读文档,然后再次阅读.Datamapper是一个很棒的ORM,你应该学习并试验它的所有功能,以便充分利用它.
| 归档时间: |
|
| 查看次数: |
2144 次 |
| 最近记录: |