【发布时间】:2011-03-17 17:26:17
【问题描述】:
我有一个带有关联的模型。根表是 Master_student。其他所有内容都有 master_student_ssn 的外键
<?php
class MasterStudent extends AppModel {
var $name = 'MasterStudent';
var $primaryKey = 'ssn';
var $displayField = 'SSN';
var $useTable = 'MASTER_STUDENTS';
var $order = array("ssn" => "asc");
var $hasMany = array(
'MasterEmail' => array(
'className' => 'MasterEmail',
'foreignKey' => 'master_student_ssn',
'conditions' => '',
'order' => 'source',
'limit' => '',
'dependent' => true
),
'MasterAddress' => array(
'className' => 'MasterAddress',
'foreignKey' => 'master_student_ssn',
'conditions' => '',
'order' => 'source',
'limit' => '',
'dependent' => true
),
'MasterPhone' => array(
'className' => 'MasterPhone',
'foreignKey' => 'master_student_ssn',
'conditions' => '',
'order' => 'source',
'limit' => '',
'dependent' => true
),
'MasterStudentName' => array(
'className' => 'MasterStudentName',
'foreignKey' => 'master_student_ssn',
'conditions' => '',
'order' => 'Effective_Date desc,source',
'limit' => '',
'dependent' => true
)
);
}
?>
[MASTER_STUDENTS](
[SSN] [int] NOT NULL,
[date_student_added] [datetime] NULL,
CONSTRAINT [PK_MASTER_STUDENT] PRIMARY KEY CLUSTERED
(
[SSN] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
[MASTER_ADDRESSES](
[id] [int] IDENTITY(1,1) NOT NULL,
[master_student_ssn] [int] NOT NULL,
[address1] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[city] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[state] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[zip] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_master_addresses] PRIMARY KEY CLUSTERED
(
[id] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
[MASTER_STUDENT_NAMES](
[ID] [int] IDENTITY(1,1) NOT NULL,
[master_student_ssn] [int] NOT NULL,
[First_Name] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Middle_Name] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
[Last_Name] [varchar](50) COLLATE SQL_Latin1_General_CP1_CI_AS NULL,
CONSTRAINT [PK_MASTER_STUDENTS_NAMES] PRIMARY KEY CLUSTERED
(
[ID] ASC
)WITH (IGNORE_DUP_KEY = OFF) ON [PRIMARY]
) ON [PRIMARY]
如何使用 cake 的 find 方法,以便我可以通过搜索一个人的名字来列出所有与一个人有关的地址、电话、姓名
1) 姓氏 2) 电话号码
即。我希望通过 cake 对这些表进行连接来与模型关联的所有数据。
MasterStudent Model中的代码是
$opts = array(
'conditions' => array(
'MasterStudentName.last_name LIKE ' => $searchvalue . '%'
)
);
$this->MasterStudent->recursive = 1;
$data = $this->MasterStudent->find('all', $opts);
使用 JohnP 的方法生成的查询是
选择 [MasterStudent].[SSN] AS [MasterStudent__0], CONVERT(VARCHAR(20), [MasterStudent].[date_student_added], 20) AS [MasterStudent_1], [MasterStudent].[ssn] AS [MasterStudent_2], [MasterStudent].[ssn] AS [MasterStudent_8], [MasterStudent].[ssn] AS [MasterStudent_19], [MasterStudent].[ssn] AS [MasterStudent_26], [MasterStudent].[ssn] AS [MasterStudent_36] FROM [MASTER_STUDENTS] AS [MasterStudent] WHERE [MasterStudentName]。[Last_name] = 'Smith'
【问题讨论】:
-
你真的还在使用 PHP 4 吗?
-
@Justin,这只是 Cake 的代码生成。这样做是为了保持兼容
-
我指的是在 PHP 类声明中使用
var。
标签: cakephp