Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/261.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_Eloquent - Fatal编程技术网

Php 如何使用laravel中的许多关系创建更新页面

Php 如何使用laravel中的许多关系创建更新页面,php,laravel,eloquent,Php,Laravel,Eloquent,我试图创建一个表单来更新具有一对多关系的模型。结构就像 item => {[arg1, arg2], [arg1, arg2], [arg1, arg2]} 每个相关模型都有两个要更新的字段。我使用了下面的代码,但我不知道如何对控制器端进行编码 @extends('app') @section('content') {!! Form::open(array('route' => array('Topic.update', $topic->id

我试图创建一个表单来更新具有一对多关系的模型。结构就像

item => {[arg1, arg2], [arg1, arg2], [arg1, arg2]}
每个相关模型都有两个要更新的字段。我使用了下面的代码,但我不知道如何对控制器端进行编码

    @extends('app')

    @section('content')
        {!! Form::open(array('route' => array('Topic.update', $topic->id), 'method' => 'PATCH')) !!}
        {!! Form::label('title', 'Title') !!}
        {!! Form::text('title', $topic->title, array('maxlength' => 250)) !!}
        @foreach($topic->pairs as $key=>$value)
            <div>
                {!! Form::label('title', 'Pair ' . $key . ': ') !!}
                {!! Form::text('a' + $key, $value->arg1) !!}
                {!! Form::text('b' + $key, $value->arg2) !!}
            </div>
        @endforeach
        {!! Form::submit() !!}
        {!! Form::close() !!}
    @endsection

相关项不是成对的,而是arg1。那么,我应该如何编写hasMany模型?谢谢PHP中的
+
符号不用于串接字符串。这是数学运算符。要连接字符串,应使用点(

因此,请按如下方式更改代码:

Form::text('a' . $key, $value->arg1)
Form::text('b' . $key, $value->arg2)
Form::text('items[' . $key . '][arg1]', $value->arg1)
Form::text('items[' . $key . '][arg2]', $value->arg2)
items => [
    [ arg1, arg2 ],
    [ arg1, arg2 ],
    ....
]
因为之前您计算的是
a
$key
的总和,所以在请求中会得到数字键

如果希望访问数组中的对,可以从表单请求将输入更改为数组,如下所示:

Form::text('a' . $key, $value->arg1)
Form::text('b' . $key, $value->arg2)
Form::text('items[' . $key . '][arg1]', $value->arg1)
Form::text('items[' . $key . '][arg2]', $value->arg2)
items => [
    [ arg1, arg2 ],
    [ arg1, arg2 ],
    ....
]
在最后一个示例中,请求将如下所示:

Form::text('a' . $key, $value->arg1)
Form::text('b' . $key, $value->arg2)
Form::text('items[' . $key . '][arg1]', $value->arg1)
Form::text('items[' . $key . '][arg2]', $value->arg2)
items => [
    [ arg1, arg2 ],
    [ arg1, arg2 ],
    ....
]

谢谢。我使用了您的方法,响应数据如下:“arg1”=>array:6[▼ 0=>“达斯汀·霍夫曼”1=>“成龙”2=>“约翰尼·德普”3=>“莱昂纳多·迪卡普里奥”4=>“梅丽尔·斯特里普”5=>“Vin柴油机”]“arg2”=>数组:6[▼ 0=>“雨人”1=>“尖峰时刻”2=>“爱德华·剪刀手”3=>“泰坦尼克号”4=>“穿普拉达的魔鬼”5=>“快速与愤怒”]现在我为属于同一型号的两个arg获得了两个数组。我可以这样说:“配对”=>array:6[array:2[arg0=>“达斯汀·霍夫曼”,arg1=>“雨人”],…]@Yangrui是的。这是你想要的吗?如果没有,请解释您希望得到的答复。刚刚编辑完我的最后一条评论对不起,我按了enter键,它提交了表单,而不是破坏了line@Yangrui我编辑了我的评论,再次查看最后一个示例,并让我知道它是否适合您