我正在使用laravel 5.2修复平台我尝试过很多东西,但我不能把它付诸实践:/希望有人可以帮助我
这是我的修理表
Schema::create('repairs', function (Blueprint $table) {
$table->increments('id');
$table->integer('brand');
$table->foreign('brand')->references('id')->on('brands');
$table->integer('equipment');
$table->foreign('equipment')->references('id')->on('equips');
$table->string('model');
$table->string('description');
$table->integer('status');
$table->foreign('status')->references('id')->on('statuses');
$table->string('code');
$table->string('notes');
$table->timestamps();
});
然后我有控制器
public function index()
{
$repairs = repair::all();
return view('repair.index_repair',compact('repairs'));
}
这是我的模特
class Repair extends Model
{
protected $fillable = ['brand','equipment','model','description','status','code'];
public function brand ()
{
return $this->belongsTo('App\brands', 'id');
}
当我试图打印像这样的品牌名称时
@foreach($repairs as $repair)
<tr>
<th>{{$repair->brand->name}}</th>
<th>{{$repair->equipment}}</th>
<th>{{$repair->model}}</th>
<th>{{$repair->description}}</th>
<th>{{$repair->status}}</th>
<th>{{$repair->code}}</th>
<th>
{!! Form::open(array('route'=>['repair.destroy',$repair->id],'method'=>'DELETE')) !!}
{{ link_to_route('repair.edit','Edit',[$repair->id],['class'=>'btn btn-primary']) }}
|
{!! Form::button('Delete',['class'=>'btn btn-danger','type'=>'submit']) !!}
{!! Form::close() !!}
</th>
</tr>
@endforeach
我有这个错误“试图获取非对象的属性”。 这是一个非常普遍的错误,我看到一些话题与人有相同的问题,我尝试使用他们的解决方案但不起作用。我不知道该怎么办..有人可以帮我吗?
谢谢
更新
现在我有了这个:
控制器:
public function index()
{
$repairs = repair::with('brands')->get();
return view('repair.index_repair',compact('repairs'));
}
修复模型:
class Repair extends Model
{
protected $fillable = ['brand','equipment','model','description','status','code'];
public function brands ()
{
return $this->hasOne('App\brands','brand','id');
}
}
品牌型号:
class brands extends Model
{
protected $fillable = ['name'];
public function repair () {
return $this->belongsTo('App\Repair','brand','id');
}
}
它给了我这个错误“Connection.php第729行中的QueryException:
SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'brands.brand'(SQL:从brands
中选择* brands
。brand
in(1,2) ))“
我尝试了一切......:/
答案 0 :(得分:1)
你的Laravel表中应该brand_id
而不是brand
来自动找出你的密钥。
如果你想使用brand
,你应该告诉Laravel它是品牌外键:
public function brand ()
{
return $this->belongsTo('App\brands', 'brand', 'id');
}