如何使用Laravel

时间:2018-09-16 15:01:57

标签: php mysql laravel

我有两个表,一个叫做“ 事件”,另一个是“ 依赖项”,一个依赖项可以有多个事件,即它们之间的关系,我尝试要做的是显示事件的数据,还显示与之相关的依存关系的数据。

这是我带去活动的控制器:

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');
    }

所以我尝试在视图中显示它:

@foreach($event->dependences as $dependence)
                <a href="#">
                {{$dependence->name}}
                </a>
                @endforeach

但我收到此错误:试图获取非对象的属性“名称”

这些是数据库中的表:

enter image description here

路线很好,但是我不知道问题出在哪里,我希望得到您的帮助,非常感谢。

2 个答案:

答案 0 :(得分:0)

您应该以以下方式直接访问

$event->dependence->name;

自从belongsTo关系带来一项以来。

还添加检查以查看对象是否为空,如:

@if($event->dependece)
    $event->dependence->name;
@endif

如果您想以某种方式管理空值情况,也可以使用@else

答案 1 :(得分:0)

每个事件只有一个依赖性。因此,您无需使用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