gpt4 book ai didi

php - Laravel 使用 'With' 子句将参数从 Controller 传递到模型

转载 作者:行者123 更新时间:2023-12-02 04:06:47 24 4
gpt4 key购买 nike

我是 Laravel 的新手,我想使用 with 子句从模型中的 Controller 传递 $id

我的模型

class Menucategory extends Model
{
protected $fillable = ['title', 'parent_id', 'restaurant_id'];

// loads only direct children - 1 level
public function children()
{
return $this->hasMany('App\Menucategory', 'parent_id');
}

// recursive, loads all descendants
public function childrenRecursive()
{
return $this->children()->with('childrenRecursive');
}
}

我的 Controller

public function show($id)
{
$menucatagories = Menucategory::with('childrenRecursive')->where('restaurant_id',$id)->where('parent_id','0')->get();
return $menucatagories;
}

我当前的输出是

[
{
"id": 1,
"title": "TestMenu Parant",
"parent_id": 0,
"restaurant_id": 12,
"children_recursive": [
{
"id": 2,
"title": "TestMenu SubCat1",
"parent_id": 1,
"restaurant_id": 12,
"children_recursive": [
{
"id": 6,
"title": "TestMenu other sub cat",
"parent_id": 2,
*******************
"restaurant_id": 13,
*******************
"children_recursive": []
},
{
"id": 7,
"title": "TestMenu other sub cat",
"parent_id": 2,
"restaurant_id": 12,
"children_recursive": []
}
]
},
{
"id": 3,
"title": "TestMenu SubCat2",
"parent_id": 1,
"restaurant_id": 12,
"children_recursive": []
}
]
}
]

我通过了 $id=12 ,但问题是我在我的子数组中获取了其他 restaurant_id 的值,但如果我使用它,它会显示正确的 jSON

public function childrenRecursive()
{
$id=12;
return $this->children()->with('childrenRecursive')->where('restaurant_id',$id);
}

我的问题是如何将 $id 从 Controller 传递到模型,或者还有其他方法吗?

最佳答案

您可以使用以下方式在 Controller 本身中传递参数。

     public function show($id)
{
$menucatagories =Menucategory::with(array('childrenRecursive'=>function($query) use ($id){
$query->select()->where('restaurant_id',$id);
}))
->where('restaurant_id',$id)->where('parent_id','0')->get();
return $menucatagories;
}

关于php - Laravel 使用 'With' 子句将参数从 Controller 传递到模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39122568/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com