Php Laravel通过(级别/树)关系一对一雄辩
嗨,我是新来的拉威尔(能言善辩)。我正试图通过(级别/树)关系,使用雄辩的ORM建立一对一的关系。我有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 | |----
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(与子类别本身在同一个表中)。抱歉,如果有点混乱,您可以查看我的示例表以更好地理解