Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/263.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

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/mysql/58.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 Activerecord-在同一个表上连接_Php_Mysql_Activerecord_Join_Phpactiverecord - Fatal编程技术网

PHP Activerecord-在同一个表上连接

PHP Activerecord-在同一个表上连接,php,mysql,activerecord,join,phpactiverecord,Php,Mysql,Activerecord,Join,Phpactiverecord,我正在使用php.activerecord,现在我试图在同一个表上创建一个连接,但不知怎么的,它不起作用 我想实现这样的目标: 我有三个主要类别和nx子类别。我想做的是,加入这个表(如示例链接中所示),并实现如下功能: ID | Category | is a Subcategory of 1 | Main 1 | NULL 2 | Main 2 | NULL 3 | Main 3

我正在使用php.activerecord,现在我试图在同一个表上创建一个连接,但不知怎么的,它不起作用

我想实现这样的目标:

我有三个主要类别和nx子类别。我想做的是,加入这个表(如示例链接中所示),并实现如下功能:

ID     |     Category     |     is a Subcategory of
1      | Main 1           | NULL
2      | Main 2           | NULL
3      | Main 3           | NULL
4      | Sub 1            | Main 1
5      | Sub 2            | Main 2
6      | Sub 3            | Main 1
我通过模型在同一个表上尝试了一个简单的连接

 static $has_many = array(
    array('category')
 );

但我只是得到了这个错误:

Fatal error: Uncaught exception 'ActiveRecord\DatabaseException' with message 'exception 'PDOException' with message 'SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'rezepte_category'' in /home/www/xxxxx/xxxxx/classes/activerecord/lib/Connection.php on line 325    
有人有主意吗

更新1:
显然,我必须设置一个别名。我这样做:

    static $has_many = array(
    array('subcategory', 'class'=>'category','foreign_key' => 'id')
);  

但是还是一样的错误。

我想你也需要一个

static $belongs_to = array(array('category'));
在你的模型中。如果没有帮助,您可能希望尝试自定义sql联接:

$join = 'LEFT JOIN category c ON(category.category_id = c.parent_id)';
$categories = Category::all(array('joins' => $join));

文档将提供进一步的信息:

如果定义了一个关系,必须考虑2个键:外键和主键。在父->子关系的情况下,您还有两个关系:子关系有父关系,反之,父关系可以有子关系

第一个,您的
属于_to
,将子项的id作为外键,父项的id作为主键。(顺便说一下,这在您的更新中看起来是错误的!)。
但是第二个,也就是说父母有多个孩子,也有id字段作为主键,因为它是主键,是这个信息的“来源”。不要试图混淆它们,因为你会有一个“单向”或“另一种”关系,因为这里只有一个关系,但你要定义它两次:)


因此,请确保外键和主键都设置正确。

自定义sql有帮助,但我现在如何访问该列?
$join = 'LEFT JOIN category c ON(category.category_id = c.parent_id)';
$categories = Category::all(array('joins' => $join));