PHP数据库加入ORM
我很难理解Phalcon中的连接。我甚至不确定是否需要使用联接,或者相关表是否以某种方式自动映射。过去我一直避免使用ORMs,所以这个概念对我来说有点新鲜 我有两张表——页面和部分PHP数据库加入ORM,php,mysql,join,orm,phalcon,Php,Mysql,Join,Orm,Phalcon,我很难理解Phalcon中的连接。我甚至不确定是否需要使用联接,或者相关表是否以某种方式自动映射。过去我一直避免使用ORMs,所以这个概念对我来说有点新鲜 我有两张表——页面和部分 class Pages extends \Phalcon\Mvc\Model { public $page_id; public $page_section_id; public $page_title; public $page_url; public $page_des
class Pages extends \Phalcon\Mvc\Model {
public $page_id;
public $page_section_id;
public $page_title;
public $page_url;
public $page_description;
public $page_tags;
public $page_content;
public $page_time;
public $page_author;
public $page_views;
public function initialize() {
$this->belongsTo('page_author', 'users', 'id');
$this->belongsTo('page_section_id', 'sections', 'section_id');
}
}
及
那么在我的控制器里我有
$pages = $this->modelsManager->createBuilder()
->from('Baseapp\Backend\Models\Pages')
->leftJoin('Baseapp\Backend\Models\Sections', 'section.section_id = Baseapp\Backend\Models\Pages.page_section_id', 'section')
->orderBy('page_time DESC')
->getQuery()
->execute()
->toArray();
print_r($pages);exit; // <- let's see what we get here
但这里的大问题是,它只返回页面数据,而不返回相关的节数据。换句话说,连接似乎不起作用
那个么,我该如何进行简单的连接,或者有并没有更好的方法使连接变得多余?例如,在模型中,您需要创建一个方法
/**
* Returns users which doesn't belong to any organization.
*
* @return mixed
*/
public static function getSomething()
{
$query = User::query()
->columns(__NAMESPACE__ . '\Pages.*')
->leftJoin(__NAMESPACE__ . '\Sections', __NAMESPACE__ . '\Pages.page_section_id = ps.section_id', 'ps')
->where('do something')
->execute();
if ($query->count()) {
return $query;
}
return false;
}
您还可以使用,您可以通过简单地{{page.sections.section_title}}
{% for page in pages %}
<div class="item">
<div class="content">
<div class="header">
{{ page.page_title }} - {{ page.section_title }}
</div>
</div>
</div>
{% endfor %}
/**
* Returns users which doesn't belong to any organization.
*
* @return mixed
*/
public static function getSomething()
{
$query = User::query()
->columns(__NAMESPACE__ . '\Pages.*')
->leftJoin(__NAMESPACE__ . '\Sections', __NAMESPACE__ . '\Pages.page_section_id = ps.section_id', 'ps')
->where('do something')
->execute();
if ($query->count()) {
return $query;
}
return false;
}