如何防止在 Laravel Blade 文件的 foreach 循环中显示重复项?
How Can I Prevent Showing Duplicate In foreach loop At Laravel Blade File?
这是我的观点blade 文件:
这是我的 table 数据:
这是我的查看代码:
<form action="" method="post">
@csrf
@foreach($options as $opt)
<label for="siteName">site name</label>
<input type="text" id="siteName" name="siteName" value="{{$opt->o_name('siteName')}}">
<label for="siteURL">site url</label>
<input type="text" id="siteURL" name="siteURL" value="{{$opt->o_name('siteURL')}}">
@endforeach
<input type="submit" value="save">
</form>
这是我的控制器代码:
public function viewOptions()
{
$options = Option::all();
return view('view/options', compact('options'));
}
这是我的 class 代码:
protected $guarded = [];
public function o_name($val)
{
$valss = DB::table('options')
->select('o_value')
->where('o_name', '=', $val)
->first();
return $valss->o_value;
}
我想在视图中显示一次而不是重复的数据和输入表单@
我怎样才能做到这一点?我的鳕鱼有什么问题?
更新您的控制器代码并替换
$options = Option::all();
与
$options_all = Option::all();
$options=$options_all[0];
新代码如下所示
public function viewOptions(){
$options_all = Option::all();
$options=$options_all[0];
return view('view/options', compact('options'));
}
试试这个
<label for="siteName">site name</label>
<input type="text" id="siteName" name="siteName" value="{{$option->o_name('siteName')}}">
<label for="siteURL">site url</label>
<input type="text" id="siteURL" name="siteURL" value="{{$option->o_name('siteURL')}}">
控制器
public function viewOptions()
{
$option = Option::all()->first();
return view('view/options', compact('option'));
}
我认为是因为您在 @foreach
和 foreach 循环中使用了两个输入..
试试这个:
<form action="" method="post">
@csrf
@foreach($options as $opt)
<label for="{{ $opt->o_name }}">{{ $opt->o_name }}</label>
<input type="text" id="{{ $opt->o_name }}" name="{{ $opt->o_name }}" value="{{ $opt->o_value }}">
@endforeach
<input type="submit" value="save">
</form>
更新:
如果你想获取特定的行,你可以只获取你想要的然后传递给视图
$options = DB::table('options')
->where('o_name', 'siteName')
->orWhere('o_name', 'siteUrl')
->get();
或使用查询生成器:
$options = Option::where(function ($q) {
$q->where('o_name', 'siteName')->orWhere('o_name', 'siteUrl');
})->get();
另一种方法是使用 laravel 作用域
这是我的观点blade 文件:
这是我的查看代码:
<form action="" method="post">
@csrf
@foreach($options as $opt)
<label for="siteName">site name</label>
<input type="text" id="siteName" name="siteName" value="{{$opt->o_name('siteName')}}">
<label for="siteURL">site url</label>
<input type="text" id="siteURL" name="siteURL" value="{{$opt->o_name('siteURL')}}">
@endforeach
<input type="submit" value="save">
</form>
这是我的控制器代码:
public function viewOptions()
{
$options = Option::all();
return view('view/options', compact('options'));
}
这是我的 class 代码:
protected $guarded = [];
public function o_name($val)
{
$valss = DB::table('options')
->select('o_value')
->where('o_name', '=', $val)
->first();
return $valss->o_value;
}
我想在视图中显示一次而不是重复的数据和输入表单@ 我怎样才能做到这一点?我的鳕鱼有什么问题?
更新您的控制器代码并替换
$options = Option::all();
与
$options_all = Option::all();
$options=$options_all[0];
新代码如下所示
public function viewOptions(){
$options_all = Option::all();
$options=$options_all[0];
return view('view/options', compact('options'));
}
试试这个
<label for="siteName">site name</label>
<input type="text" id="siteName" name="siteName" value="{{$option->o_name('siteName')}}">
<label for="siteURL">site url</label>
<input type="text" id="siteURL" name="siteURL" value="{{$option->o_name('siteURL')}}">
控制器
public function viewOptions()
{
$option = Option::all()->first();
return view('view/options', compact('option'));
}
我认为是因为您在 @foreach
和 foreach 循环中使用了两个输入..
试试这个:
<form action="" method="post">
@csrf
@foreach($options as $opt)
<label for="{{ $opt->o_name }}">{{ $opt->o_name }}</label>
<input type="text" id="{{ $opt->o_name }}" name="{{ $opt->o_name }}" value="{{ $opt->o_value }}">
@endforeach
<input type="submit" value="save">
</form>
更新:
如果你想获取特定的行,你可以只获取你想要的然后传递给视图
$options = DB::table('options')
->where('o_name', 'siteName')
->orWhere('o_name', 'siteUrl')
->get();
或使用查询生成器:
$options = Option::where(function ($q) {
$q->where('o_name', 'siteName')->orWhere('o_name', 'siteUrl');
})->get();
另一种方法是使用 laravel 作用域