Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/254.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
PHP数据库加入ORM_Php_Mysql_Join_Orm_Phalcon - Fatal编程技术网

PHP数据库加入ORM

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

我很难理解Phalcon中的连接。我甚至不确定是否需要使用联接,或者相关表是否以某种方式自动映射。过去我一直避免使用ORMs,所以这个概念对我来说有点新鲜

我有两张表——页面和部分

 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;
}