我是新手,需要一点帮助。我有一个 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;
如您所见,每个司机都有一辆与其关联的汽车。我如何查询对象中与他关联的每个司机和每辆汽车。
我可以让所有的驱动程序都使用它。
$d = new Driver();
$data['driver'] = $d->get();
在我的司机模型中有
var $has_one = array('vehicle');
我想获取$data['driver']中的所有记录
最佳答案
这是一种简单的方法,假设您有一对一的关系:
在您的模型驱动程序中:
var $has_one = array('vehicle');
在您的模型车辆中:
var $has_one = array('driver');
获取车辆及其驾驶员:
$v = new Vehicle();
$v->include_related('driver')->get();
include_related()
仅适用于 $has_one
相关模型。
驱动程序的属性现在存储在 $v
中,前缀为 driver_
。要访问车辆的驾驶员列:
echo $v->driver_first_name;
echo $v->driver_last_name;
或者,您可以 auto-load每次您访问车辆时司机:
// In Vehicle
var $auto_populate_has_one = TRUE;
对于有很多的关系,你可以这样做:
$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;
}
这只是一种方法。在 Datamapper 中访问关系的方法有很多,最好的选择是 read the documentation彻底,然后再读一遍。 Datamapper 是一个很棒的 ORM,您应该学习和试验它的所有功能以充分利用它。
关于php - CodeIgniter DataMapper ORM v1.8.0 - 如何从多个表中获取记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5849439/