gpt4 book ai didi

php - CakePHP - 代码 $hasOne 的结果

转载 作者:行者123 更新时间:2023-11-29 08:05:00 25 4
gpt4 key购买 nike

我有一个问题,希望不要让你感到困惑。

我想显示文章的用户名(它们是两个表,用户和文章),相关性是users.id -> posts.author(外键)

这正确显示了我想要的内容:

SELECT `Post`.`id`, `Post`.`author`, `Post`.`title`, `Post`.`content`, `Post`.`description`, `Post`.`status`,
`Post`.`name`, `Post`.`type`, `Post`.`date`, `Post`.`modified`, `Post`.`img`,
`Authors`.`username`, `Authors`.`id`
FROM `myblog`.`posts` AS `Post`
LEFT JOIN `myblog`.`users` AS `Authors` ON (`Authors`.`id` = `Post`.`author`)
WHERE `Post`.`type` = 'post'
ORDER BY `Post`.`date` desc
LIMIT 5

问题在于下面的代码处于 ON

 (`Authors`.`id` = `Post`.`author`)

转换为

 ON (`Authors`.`id` = `Post.author`)

生成“Post”。 `author` 是字符串。

cakePHP中的代码

帖子模型内部

public $hasOne = array(
'Authors' => array(
'className' => 'User',
'foreignKey' =>'id',
'fields' => array('username','id'),
'conditions'=>array('Authors.id'=>'Post.author')
)
);

postsController 内部

public $paginate = array(
'Post' => array(
'paramType' => 'querystring',
'limit' => 5,
'conditions'=> array('Post.type'=>'post'),
'order' => array('Post.date'=>'desc')
)
);

...
...
...

public function index() {

$this->Paginator->settings = $this->paginate;

$data = $this->Paginator->paginate('Post');

$this->set('posts',$data);
}

返回所有结果,但用户名为空。

不知道吗?使用子查询?

我尝试转义字符 'conditions' => 数组 ('Authors'.'id' => 'Post.author') 但它不起作用。 ​

最佳答案

我认为问题出在关系类型上。帖子属于一个用户,但一个用户可以拥有多个帖子。所以,关系应该是-

User.php

public $hasMany = array('Post');

Post.php

public $belongsTo = array('User');

关于php - CakePHP - 代码 $hasOne 的结果,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22908549/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com