Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/67.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 Laravel通过(级别/树)关系一对一雄辩_Php_Sql_Laravel_Eloquent - Fatal编程技术网

Php Laravel通过(级别/树)关系一对一雄辩

Php Laravel通过(级别/树)关系一对一雄辩,php,sql,laravel,eloquent,Php,Sql,Laravel,Eloquent,嗨,我是新来的拉威尔(能言善辩)。我正试图通过(级别/树)关系,使用雄辩的ORM建立一对一的关系。我有product\u category表,表中有id和parent\u id 这是我的产品类别表 |-----|--------|-----------| | id | name | parent_id | |-----|--------|-----------| | 1 | book | 0 | | 2 |notebook| 1 | |----

嗨,我是新来的拉威尔(能言善辩)。我正试图通过(级别/树)关系,使用雄辩的ORM建立一对一的关系。我有
product\u category
表,表中有
id
parent\u id

这是我的
产品类别

|-----|--------|-----------|
| id  |  name  | parent_id |
|-----|--------|-----------|
|  1  |  book  |     0     |
|  2  |notebook|     1     |
|----|----------------|-------------|
| id | name           | category_id |
|----|----------------|-------------|
|  1 | super notebook |      2      |
这是我的
产品

|-----|--------|-----------|
| id  |  name  | parent_id |
|-----|--------|-----------|
|  1  |  book  |     0     |
|  2  |notebook|     1     |
|----|----------------|-------------|
| id | name           | category_id |
|----|----------------|-------------|
|  1 | super notebook |      2      |
我希望能够从产品中的子类别_id信息中提取父类别信息。这可能吗

使用SQL时,这是查询(假设
category\u id
为2)

更新:

这是我当前的实现

<?php

    class Product extends Eloquent {

        public function subcategory()
        {
            return $this->hasOne('ProductCategory');
        }

        public function category()
        {
            // This should get the parent info of the subcategory
            return ProductCategory::find($this->subcategory->parent_id);
        }

    }

基本的1-2-1关系如下:

Product::find(1)->category;
产品型号

类别模型

现在,您可以查询如下数据:

Product::find(1)->category;
生成的SQL:

从id=1的产品中选择*

从product_id=1的类别中选择*

基本上,您应该重命名列以匹配laravels默认值,否则设置键,如
$this->hasOne('Category','foreign_key')


我已经这样做了,问题是这种关系只适用于子类别。我希望关系通过category(与子类别本身在同一个表中)。抱歉,如果有点混乱,您可以查看我的示例表以更好地理解