我需要通过parrent模型ID显示列表子模型: 如果我在模型中使用它,它的工作原理:
public function getIdAttribute($id)
{
$sales = Sale::where('category_id',$id)->get();
foreach ($sales as $sale) {
$clean_fields[$sale->attributes['id']]['name'] = $sale->attributes['name'];
$clean_fields[$sale->attributes['id']]['price'] = $sale->attributes['price'];
}
return $clean_fields;
}
在模板中显示列表:
{% for service in servicesList %}
<h1>{{service.name}}</h1>
<ul class="children_list">
{% for children in service.id %}
<li>{{children.name}}</li>
{% endfor %}
<ul>
{% endfor %}
我将属性id修改为数组。它在模板中工作,但在后端我有错误,因为id没有传递给列表控制器。我如何在组件模板中获取子模型?
答案 0 :(得分:2)
我假设你有2个模特Service
(父母)和Sale
(它的孩子)
我还假设从
template for loop
开始,它是hasMany
关系(其中service
有很多sale
的记录)
其中Sale
的父级category_id
为id
。
所以在父模型中你可以定义关系
class Service extends Model
{
public $hasMany = [
'sales' => ['Acme\Blog\Models\Sale', 'key' => 'category_id']
// here you need to add proper namespace for your model
];
}
现在,当您需要获取Sale
的相对记录时,您可以将此关系称为别名sales
。
我们假设我们从组件传递servicesList
。
public function onRun()
{
$this->page['servicesList'] = Service::all();
}
现在在页面内部,您可以编写类似这样的内容,因为servicesList
将可用于页面(其Service
模型的集合
{% for service in servicesList %}
<h1>{{service.name}}</h1>
<ul class="children_list">
{% for children in service.sales %}
<!-- its relation name 'service.sales' which we defined in model -->
<li>{{children.name}}</li>
{% endfor %}
<ul>
{% endfor %}
如果您有任何疑问,请在评论中告诉我。
答案 1 :(得分:0)
为您的模型添加适当的关系
$("#btn-group-agent-upload").on("click", function () {
var file = $("#group-agent-file").val();
test(file);
});
然后你让孩子们做你想做的事情
public function children()
{
return $this->hasMany(Sale::class,'category_id','id');
}