任何人都可以帮助我解决这个问题吗?我一直坚持几天的错误htmlspecialchars()期望参数1是字符串,在Laravel 5.3中给出的数组为。从Laravel 5.3的外键填充下拉的正确方法
这里是我的控制器
public function create()
{
$categories = DB::table('categories')->pluck('name', 'id');
foreach($categories as $category)
{
echo $category;
}
return view('admin.processor.create', compact('categories', $categories));
}
这是我的看法(形式)
{!! Form::open(['url' => '/processor']) !!}
{!! csrf_field() !!}
<div class="form-group">
{!! Form::label('make', 'Manufacturer') !!}
{!! Form::select('make', ['Intel', 'AMD', 'Apple', 'Qualcomm', 'class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('chipset', 'Chipset') !!}
{!! Form::text('chipset', ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('type', 'Type') !!}
{!! Form::text('type', ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::label('category', 'Category') !!}
{!! Form::select('categories', $categories, null, ['class' => 'form-control']) !!}
</div>
<div class="form-group">
{!! Form::submit('Add Processor', ['class' => 'btn btn-primary form-control']) !!}
</div>
{!! Form::close() !!}
我只是想实现的东西相当于这个
<select class="form-control" name="category">
<?php
$stmt = $connect->prepare("SELECT * FROM categories");
$stmt->execute();
while($row = $stmt->fetch())
{
print "<option value='".$row['id']."'>".$row['name']."</option>";
}
?>
</select>
我的类别型号
use Illuminate\Database\Eloquent\Model;
class Category extends Model
{
protected $fillable = ['name'];
public function processor()
{
return $this->hasMany('App\Processor', 'category_id');
}
}
我的处理器型号
use Illuminate\Database\Eloquent\Model;
class Processor extends Model
{
protected $fillable = ['make', 'chipset', 'type', 'category_id'];
public function category()
{
return $this->belongsTo('App\Category', 'category_id');
}
}
我试过了,但它说:“在Builder.php中的BadMethodCallException行2450: 调用未定义的方法Illuminate \ Database \ Query \ Builder :: lists()” –
我已更新我的答案检查它。 –
你不需要在'compact()'函数内传递'$ categories'作为第二个参数。 –