我有两个表,一个称为“事件”,另一个称为“依赖项”,一个依赖项可以有多个事件,这就是它们之间的关系,我尝试的要做的就是显示事件的数据,同时也显示与之相关的依赖项的数据。
这是我带来事件的 Controller :
class WelcomeController extends Controller
{
public function evento($slug){
$event = Event::where('slug', $slug)->first();
return view('evento', compact('event'));
}
这是事件模型:
class Event extends Model
{
protected $table = 'events';
protected $fillable = [
'admin_id', 'dependence_id', 'place_id', 'name', 'slug', 'excerpt', 'body', 'status', 'file'
];
public function dependences(){
return $this->belongsTo('App\Dependence', 'dependence_id');
}
依赖模型:
class Dependence extends Model
{
protected $table = "dependences";
protected $fillable = [
'name', 'slug'
];
public function events(){
return $this->hasMany('App\Event');
}
所以我尝试在 View 中显示它:
@foreach($event->dependences as $dependence)
<a href="#">
{{$dependence->name}}
</a>
@endforeach
但我收到此错误:尝试获取非对象的属性“名称”
这些是数据库中的表:
路线没问题,但不知道问题出在哪里,希望得到您的帮助,非常感谢。
最佳答案
每个事件只有一个依赖项。所以你不需要使用foreach。
$events->dependency->name
您应该将关系名称从 dependences
更改为 dependency
。
class Event extends Model
{
public function dependency()
{
return $this->belongsTo('App\Dependence', 'dependence_id');
}
}
查看中:
@foreach($events as $event)
<a href="#"> {{ $event->dependency->name }} </a>
@endforeach
关于php - 如何使用 Laravel 显示两个相关表中的数据,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52355412/