Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/laravel/10.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_Laravel - Fatal编程技术网

Php Laravel访问数据透视表中的额外字段

Php Laravel访问数据透视表中的额外字段,php,laravel,Php,Laravel,我正在使用透视表中的一个额外字段处理多个关系。我有一个类别列表,我想与蓝图关联,并包括一个额外的字段。 在这个蓝图的编辑页面上,我想显示所有类别,并填写额外字段(如果存在)的值。然后,用户可以编辑这些类别的任何额外值并保存回透视表 @foreach ($categories as $id=>$category) <label for="{{$id}}">{{$category}}</label> <input type=&qu

我正在使用透视表中的一个额外字段处理多个关系。我有一个类别列表,我想与蓝图关联,并包括一个额外的字段。 在这个蓝图的编辑页面上,我想显示所有类别,并填写额外字段(如果存在)的值。然后,用户可以编辑这些类别的任何额外值并保存回透视表

@foreach ($categories as $id=>$category) 
   <label for="{{$id}}">{{$category}}</label>
   <input type="number" name="{{$id}}" id="{{$id}}" 
          value="{{ old($id, $blueprint->categories[$id]->pivot->questions or '') }}" />                       
@endforeach
在edit.blade.php中,我将遍历这些类别,为每个类别创建标签和输入。但是,如果透视表中不存在每个类别的预先存在的值,那么我就无法解决如何填充这些值的问题

@foreach ($categories as $id=>$category) 
   <label for="{{$id}}">{{$category}}</label>
   <input type="number" name="{{$id}}" id="{{$id}}" 
          value="{{ old($id, $blueprint->categories[$id]->pivot->questions or '') }}" />                       
@endforeach
第二类可能是“昆虫”,但我还没有将其与“生物”联系起来。 问题是,当循环到达类别2时,它在数组中找不到该键,并因未定义的键错误而失败

谢谢你的帮助!
Cyle

您应该首先检查blueprint和category之间是否存在关系,然后获取额外字段。指

@foreach($id=>$category的类别)
{{$category}
@如果($blueprint->has('categories')&&&$blueprint->categories->has($id)&&&&$blueprint->categories[$id]->pivot->questions)

在&&in:@if($blueprint->has('categories')&&$blueprint->categories[$id]->pivot->questions)之后,当遇到不存在的$id时,我仍然会收到未定义的键错误。我已经更新了答案。我已经添加了
&&$blueprint->categories->has($id)
谢谢。我更了解has()的去向。但是,我在输入字段中得到的值与类别数组中的序列相关,而不是与“id”字段相关。例如,上面的“plants”是该数组中的元素0,“animals”是元素1。如何找到具有与“id”键关联的值的元素?我在控制器中尝试的另一个解决方案是:
@foreach($blueprint->categories as$subarray)@if(isset($subarray['id'])&&&$subarray['id'==id)$questions=$subarray->pivot->questions@endif@endforeach
哪一个给了我正确的值,但我如何将其放入blade?
@foreach ($categories as $id=>$category) 
    <label for="{{$id}}">{{$category}}</label>

    @if($blueprint->has('categories') && $blueprint->categories->has($id) && $blueprint->categories[$id]->pivot->questions)
        <input type="number" name="{{$id}}" id="{{$id}}" 
              value="{{ old($id, $blueprint->categories[$id]->pivot->questions or 
    @else
        <input type="number" name="{{$id}}" id="{{$id}}" 
              value="{{ old($id) }}" />
    @endif
@endforeach