Php 如果belongTo关系返回null,则返回默认值
我有一个belongTo关系,若连接条件匹配,那个么ok,但当并没有数据时,它返回null。在这种情况下,我希望它像我预期的那样返回默认值。这是我所尝试的,但不是成功。请帮帮我Php 如果belongTo关系返回null,则返回默认值,php,laravel-5,Php,Laravel 5,我有一个belongTo关系,若连接条件匹配,那个么ok,但当并没有数据时,它返回null。在这种情况下,我希望它像我预期的那样返回默认值。这是我所尝试的,但不是成功。请帮帮我 class Task extends Model { use SoftDeletes; protected $table = 'tasks'; protected $fillable = [ 'name', 'description', 'proj
class Task extends Model
{
use SoftDeletes;
protected $table = 'tasks';
protected $fillable = [
'name',
'description',
'project_id',
];
protected $with = ['project', 'status'];
// this is expected
public function getProjectAttribute($value)
{
return $value ?? ['id' => '', 'name' => ''];
}
/**
* @return App\Modules\Com\Models\Project
*/
public function project()
{
return $this->belongsTo(Project::class, 'project_id', 'id')->select(['id', 'name']);
}
}
使用description属性,我可以覆盖它,但是为什么我不使用project属性呢?如何设置项目关系的位置
类似于此任务::选择(*)->project()->where('project.name','ABC') 我从来没有用过拉威尔——但是。。。文档显示,在使用belongsTo进行更新时,可以将其设置为默认值,以避免条件检查。也许它对选择也有帮助
您可以尝试在通话结束时添加默认值
return $this->belongsTo(Project::class, 'project_id', 'id')
->select(['id', 'name'])
->withDefault([
'project_id' => 'project.name',
'id' => 'ABC',
]);
资料来源:
或
您可以执行条件检查:
public function project()
{
$return $this->belongsTo(Project::class, 'project_id', 'id')->select(['id', 'name']);
if( $return === null )
// return your default values
else
return $return;
}