php - Laravel关系空外键获取

标签 php eloquent laravel-5.1 foreign-key-relationship

由于 team_id 在我的门票表中是可选的,我已将其设置为可为空但仍然是团队表的外键,但是当我尝试获取与团队表有关系的多行门票时,具有team_id 正确返回,但 team_id 为空的工单会中断程序并返回此错误“尝试获取非对象的属性”。

迁移:

Schema::create('tickets', function (Blueprint $table) {
    $table->integer('team_id')->unsigned()->nullable();
});

Schema::table('tickets', function (Blueprint $table) {
    $table->foreign('team_id')
          ->references('id')
          ->on('teams');
});

票证模型

public function team()
{
    return $this->belongsTo('App\Models\Team', 'team_id', 'id');
}

团队模型

public function tickets()
{
    return $this->hasMany('App\Models\Ticket', 'id', 'team_id');
}

工单 Controller

$tickets = Ticket::orderBy('created_at', 'desc')
    ->take(10)
    ->get();

foreach ($tickets as $ticket) {
   var_dump($ticket->team->name);
}

最佳答案

会的,因为 $ticket->team 对于 team_id 为 null 的行不存在。

你可以这样做

foreach ($tickets as $ticket) {
    if($ticket->team){
        var_dump($ticket->team->name);
    }
}

关于php - Laravel关系空外键获取,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33922847/

相关文章:

PHP/MySQL : Searching Fulltext using MATCH() AGAINST() & ORDER BY?

php - 如何使用 php 和 mysql 在数据库中存储 html 元素(包括标签)?

php - 如何计算用户在一个月内添加的帖子 laravel?

php - Laravel:列选择,找不到列

php - 有没有办法从 Laravel 5 的包中排除 CSRF 保护的路由?

php - Laravel Assets URL 忽略 https

php - 使用 Group 和 If 语句以及 Order by 选择两个用户之间的最后一条消息

php - Laravel 将关系对象添加到新的 Eloquent 模型中

php - 在验证期间仅显示一次多个错误消息

php - 相关数据的查询构建器结构