私は CakePHP 2.7.8 でサービス要求アプリケーションに取り組んでいます。ユーザーのエリアで要求されたサービスを提供しているクライアントのリストを表示する必要があります。
このためにservice_requests
、ユーザーが行ったリクエストを追跡するためのテーブルをデータベースに用意しています。
CREATE TABLE `service_requests` (
`id` char(36) NOT NULL,
`customer_id` char(36) DEFAULT NULL,
`customer_address_id` char(36) DEFAULT NULL,
`service_id` char(36) DEFAULT NULL,
`service_area_id` char(36) DEFAULT NULL,
`status_code` int(11) DEFAULT NULL,
`status` varchar(30) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)
ここservice_id
で とservice_area_id
は、それぞれ 2 つの異なるモデルservices
との外部キーであることに注意してくださいservice_areas
。
サービス.sql
CREATE TABLE `services` (
`id` char(36) NOT NULL,
`title` varchar(45) DEFAULT NULL,
`description` text,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`)
)
およびservice_areas.sql
CREATE TABLE `service_areas` (
`id` char(36) NOT NULL,
`postal_id` char(36) DEFAULT NULL,
`area_name` varchar(45) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `postal_id_idx` (`postal_id`)
)
クライアント (サービス プロバイダー) によって提供されるサービスのリストを保持する別のテーブルがあります。
CREATE TABLE `client_services` (
`id` char(36) NOT NULL COMMENT ' ',
`client_id` char(36) DEFAULT NULL,
`service_id` char(36) DEFAULT NULL,
`charge` float DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `client_id_idx` (`client_id`),
KEY `service_id_idx` (`service_id`)
)
サービスプロバイダーの対象となるサービスエリアのリストを維持するための別のテーブル。
CREATE TABLE `client_service_areas` (
`id` char(36) NOT NULL,
`client_id` char(36) DEFAULT NULL,
`service_area_id` char(36) DEFAULT NULL,
`created` datetime DEFAULT NULL,
`modified` datetime DEFAULT NULL,
PRIMARY KEY (`id`),
KEY `client_id_idx` (`client_id`),
KEY `service_area_id_idx` (`service_area_id`)
)
serviceRequest モデル: serviceRequest.php
class ServiceRequest extends AppModel {
public $displayField = 'status';
/**
* belongsTo associations
*
* @var array
*/
public $belongsTo = array(
'Customer' => array(
'className' => 'Customer',
'foreignKey' => 'customer_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'CustomerAddress' => array(
'className' => 'CustomerAddress',
'foreignKey' => 'customer_address_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'Service' => array(
'className' => 'Service',
'foreignKey' => 'service_id',
'conditions' => '',
'fields' => '',
'order' => ''
),
'ServiceArea' => array(
'className' => 'ServiceArea',
'foreignKey' => 'service_area_id',
'conditions' => '',
'fields' => '',
'order' => ''
)
);
}
view
以下にアクセスしてアクションを要求する場合:
http://localhost/service_requests/view/<service_request_id>
service_requests からの結果を表示します
ここで私がしたいことは、要求されたサービス エリアで要求されたサービスを提供するクライアントの名前を含むリストをこのビューの下に表示することです(同じサービス エリアで同じサービスを提供する多くのサービス プロバイダーが存在する可能性があります)。
これは、サービスを提供するクライアントのリストを表示することを意味しCarpenter
ますGhaziabad
クライアントの名前とその他の詳細は、テーブルから取得されclients
ます。