我有一个用户控制器,我需要在那些users_controllers上使用照片模型,我可以使用它从以下访问该模型,哪些是标准使用?
$this->loadModel('Photo');
Run Code Online (Sandbox Code Playgroud)
要么
var $uses =array('User','Photo');
Run Code Online (Sandbox Code Playgroud)
加载模型或$ uses需要使用的数组?
我正在使用一个不可更改的遗留数据库模式,其中一个对象的每个实例在数据库中都有自己的表,并带有相关记录.我需要在useTable每次实例化模型时更改模型,但保留Cake的漂亮缓存,什么不是.
假设我有很多pad对象,每个对象都有几个音符对象(注意belongsTo Pad,Pad hasMany Note).每个打击垫在打击垫表中都有一个记录,但每个记事本在数据库中都有自己的表(称为"pad_ {id}").这个架构是固定的,我必须使用它.
现在我不需要做任何保存,所以我在模型中执行此操作之后才发现支持阅读:
function beforeFind($query_data) {
if(empty($query_data['pad_id'])) {
return false;
} else {
$this->useTable = $query_data['pad_id'];
parent::__construct();
return $query_data;
}
}
Run Code Online (Sandbox Code Playgroud)
这会更改数据库中使用的模型表,并且可以正常工作Core::debug > 0.但是,当它为零时,我认为CakePHP缓存模型代码并且没有正确地更改表.在任何情况下,当我访问/ pads/view/{pad_id}或动态更改此表的任何操作时,我都会收到404错误.我无法弄清楚确切的错误是什么,因为它在我打开调试时工作正常.因此,任何关于调试此问题的指示也会有所帮助.
谢谢!
在CakePHP应用程序中,导入能够访问模型或模型本身的控制器是否更好?
我有一张包含父母和孩子的桌子.我希望能够构建模型,以便它返回父母和他们的孩子,即它与自己联系.
ID Name ParentID
1 Parent 0
2 Child1 1
3 Child2 1
4 Parent2 0
5 Child3 4
Run Code Online (Sandbox Code Playgroud)
我使用以下SQL
SELECT
grp2.id,
grp2.name
FROM wp_bp_groups grp1
LEFT JOIN wp_bp_groups grp2
ON grp2.parent_id = grp1.id
WHERE grp1.id = '$parent_id'
ORDER BY grp2.name
Run Code Online (Sandbox Code Playgroud) 现在是时候了解MVC了,所以这就是我想要做的事情; 而且我无法获得模型应该做的事情.根据维基百科,一个模型:
该模型管理应用程序域的行为和数据,响应有关其状态的信息请求(通常来自视图),并响应指令以更改状态(通常来自控制器).在事件驱动的系统中,模型在信息发生变化时通知观察者(通常是视图),以便他们能够做出反应.
在CakePHP中,你应该以这种非常简单的方式建立一个模型:
<?php
class Posts extends AppModel {
var $name = 'Posts';
}
?>
Run Code Online (Sandbox Code Playgroud)
所以,如果我想要,例如,我的数据库中的最后10个帖子,我会创建一个看起来像这样的控制器:
<?php
class PostsController {
function retrieve_latest($number = 10) {
$posts = $this->Users->find(array(
'fields' => '*',
'order' => 'posts.post_id DESC',
'limit' => $number,
'page' => '1',
'conditions' => array('posts.post_display == 1')
));
$this->set('posts', $posts);
}
}
?>
Run Code Online (Sandbox Code Playgroud)
而这个人会传递一个调用posts我视图的变量,然后相应地渲染它.问题是,我的模型不应该做任何其他事情吗?因为如果它简单,那么自定义模型就没有意义了,我的意思是,它只是模型类的空扩展.
我有一张运动员的表.运动员有教练,他们也是运动员.运动员可能有多名教练.
为了解决这个问题,我创建了一个运动员表,它使用带有id字段的连接表,athlete_id字段和coach_id字段.athlete_id和coach_id字段都指向运动员表到id字段.
通常,根据Cake约定,我必须将我的两个字段命名为athlete_id,但我找到了以下链接,说明如何处理:http: //book.cakephp.org/1.2/view/851/Multiple-关系到最相同的模型
根据Cake约定,我会将我的联名表命名为athlete_athletes,但我不确定它是否能正常运行?将它称为Athle_coaches似乎有意义,但我敢打赌,这可能会打破Cake的自动功能.
这是否可以将join表称为athlete_athletes?这是正确的方法吗?有没有更好的办法?
我想在下拉列表中显示所有项目负责人的姓名.
项目负责人只是在公司工作的一些员工.
这是我的表格:
project_leaders
,----,----------------,
| id | hr_employee_id |
|----|----------------|
| 1 | 18 |
'----'----------------'
projects
,----,------,-------------------,
| id | name | project_leader_id |
|----|------|-------------------|
| 1 | cake | 1 |
'----'------'-------------------'
hr_employees
,----,------,---------,
| id | name | surname |
|----|------|---------|
| 18 | joe | dirt |
'----'------'---------'
Run Code Online (Sandbox Code Playgroud)
我的ProjectsController看起来像这样:
public function add() {
if ($this->request->is('post')) {
$this->Project->create();
if ($this->Project->save($this->request->data)) {
$this->_sendProjectRequestEmail($this->Project->getLastInsertID() );
$this->Session->setFlash(__('The project has been saved'));
$this->redirect(array('action' => 'index'));
} else {
$this->Session->setFlash(__('The project …Run Code Online (Sandbox Code Playgroud) 我想在 CakePHP3 中为两个模型实现一个 autoslug 函数,并使用 -callbackbeforeSave来处理那些工作正常的模型。但是 slug 结构与 in 有点不同Inflector::slug,所以我为不同的结构编写了一个小函数,最终引出了我的问题
在 Cake2 中,我会将这个辅助函数放在不再存在的 AppModel 中。现在最好的方法是什么?一种行为(对于 2 行代码来说似乎有点大)class AppTable extends Table或 ..?
我有一个模拟Job的Jobs for Jobs.
当我点击/ jobs(作业控制器的索引功能)时,我需要在其他2个表(未加入Job)上运行查询,以查找在实际显示索引之前手动插入作业的值.
我尝试了几件事但似乎无法在此方面取得任何进展.
谁能帮我这个?
1)从客户和包的连接中选择字段(复杂条件)2)遍历结果并在作业中插入/更新值3)显示作业
先感谢您.
Manikandan
所以我刚刚安装了CakePHP,我非常高兴能够使用它.
然而,MVC模型是吹嘘我的心灵.我查看了文档并给我留下了非常深刻的印象,但对于该怎么做却完全不知所措.
教程和文档显示了创建反映数据库交互等的应用程序,但我现在想要做的就是创建一个简单的索引页面.我已经编写了它(html,一些样式表和基本的javascript),但我想将其转换为适合CakePHP模型.
有没有人知道开始翻译页面以适应CakePHP模型的好教程?另外,我想开始将我的思维方式转换为MVC模型.