[英]Laravel eloquent one to one through (level/tree) relationship
嗨,我是laravel(eloquent)的新手。 我正在嘗試使用雄辯的ORM 一對一地通過(級別/樹)關系 。 我有product_category
表有id
和parent_id
。
這是我的product_category
表
|-----|--------|-----------|
| id | name | parent_id |
|-----|--------|-----------|
| 1 | book | 0 |
| 2 |notebook| 1 |
這是我的product
表
|----|----------------|-------------|
| id | name | category_id |
|----|----------------|-------------|
| 1 | super notebook | 2 |
我希望能夠僅從產品中的子類別_id信息中提取父類別信息。 這可能嗎?
使用SQL時,這是查詢(假設category_id
為2)
SELECT * FROM `product_category` WHERE `id` = (SELECT `parent_id` FROM `product_category` WHERE `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關系是這樣完成的:
產品型號
class Product extends Eloquent {
public function category()
{
return $this->hasOne('Category');
}
}
分類模型
class Category extends Eloquent {
public function product()
{
return $this->belongsTo('Product');
}
}
現在您可以查詢這樣的數據:
Product::find(1)->category;
生成的SQL:
select * from products where id = 1
select * from categories where product_id = 1
基本上你應該重命名你的列以匹配laravels默認值,否則設置像$this->hasOne('Category', 'foreign_key');
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.