带有外键数据的Laravel json输出


laravel json output with foreign key data

考虑这个返回课程信息的JSON。

{
id: 1, 
user_id: 1,  
course_category_id: 5,
course_title: "PHP Programming Language",
course_requirment: "Need to Know HTML CSS and Object Oriented  Programming",
promo_video: null,
published: 0,
created_at: "2016-08-04 16:14:39",
updated_at: "2016-08-04 16:14:39"
}

我正在传递user_id和course_category_id。而不是传递user_id和course_category_id,我想传递用户名和course_category的名称,就像我们在刀片文件($course->user->name)。他们在不同的桌子上。user_id与User模型有关系。课程模型中的方法是

public function user()
{ 
  return $this->belongsTo(User::class); 
}

对于course_category_id,

public function course_cateogory()
{
   $return $this->belongsTo(CourseCategory::class);
}

in my controller:

$course = Course::where('user_id',1)->where('course_category_id',5)->first();
  return response()->json($course,200);

我该怎么做呢?

使用whereHas。请参阅Eloquent文档中的查询关系存在一节。

的例子:

$posts = Course::whereHas('user', function ($query) {
    $query->where('name', 'like', 'name to search');
})->whereHas('course_category', function ($query) {
    $query->where('course_name', 'like', 'course name to search');
})->get();