数据库中有关于汽车主题的表格:这些表格中的
标记
(id,name,alias)
模型
(id,name,alias,mark_id)
大约是以下数据:
$marksModels = [
'Tesla' => ['Model S','Model X'],
'Toyota' => ['Avensis','Prius New','iQ'],
'Mercedes-Benz' => ['B-Class'],
'BMW' => ['i3','1-Series','2-Series','3-Series'],
...
];
应用\模型
class Mark extends Model {
protected $fillable = ['name','alias'];
public $timestamps = true;
public function carmodel(){
return $this->hasMany('App\Models\CarModel');
}
}
class CarModel extends Model {
protected $table = 'models';
protected $fillable = ['name','alias','mark_id'];
public function mark(){
return $this->belongsTo('App\Models\Mark');
}
}
我试图只得到我需要的邮票['Tesla','BMW']
:
public function index() {
$models = CarModel::with(['mark' => function($query){
$query->whereIn('name', ['Tesla','BMW']);
}])->get();
//$models = Mark::with('carmodel')->whereIn('name', ['Tesla','BMW'])->get();// та же ошибка
return view('admin.cars',[
'models' => $models,
]);
}
看法
@if(count($models))
@foreach($models as $model)
{{ $model->mark->name }}
@endforeach
@endif
结果,出现错误:
Trying to get property 'name' of non-object (View:
生成以下请求
select * from marks where marks.id in (1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12, 13, 14, 15) and name in ('Tesla', 'BMW')
:与模型::与?
像这样试试