问题描述
我正在编写一个API,并且有与之相关的主题和评论。我的愿望是显示所有主题,同时还显示属于该主题的评论。我使用hasMany选项建立了关系,但是我无法显示数据。
评论表
发布模型
<?PHP
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Posts extends Model
{
protected $table = 'posts';
protected $fillable = [
'post_id','user_id'
];
public function user(){
return $this->belongsTo('App\Models\Users');
}
public function comment()
{
return $this->hasMany('App\Models\Comments','post_id','id');
}
}
评论模型
<?PHP
namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Comments extends Model
{
protected $fillable = [
'user_id','description'
];
public function user()
{
return $this->belongsTo('App\Models\Users','user_id','id');
}
public function post()
{
return $this->belongsTo('App\Models\Posts','id');
}
}
例如,当我拍摄下面的所有主题时,我想要带有用户ID的评论。我该如何自定义?@H_502_30@
{
"id": 1,"user_id": 10,"image": "https://lorempixel.com/800/400/cats/WhaleDevops/?43757","description": "Et quia enim distinctio non qui laudantium voluptatem. Cumque minus cum pariatur necessitatibus. Repellat qui provident voluptatum ut. Et sapiente eaque eum ut. Repudiandae eveniet a harum ea totam consectetur. Facere facilis sunt et consequuntur sapiente. A aspernatur placeat tenetur et. Omnis quasi sunt nostrum et velit sint quia. Velit temporibus ut aut ea in repudiandae.","created_at": "1999-04-11T17:37:42.000000Z","updated_at": "2020-08-08T10:41:28.000000Z"
},{
"id": 2,"user_id": 2,"image": "https://lorempixel.com/800/400/cats/WhaleDevops/?53905","description": "Quasi ab recusandae molestiae pariatur et ut. Harum dolorum illo aspernatur fugit sequi aut. Modi quasi voluptas ad maxime ducimus quia molestiae maiores. Pariatur quam quam officia expedita. Alias quas aliquid et.","created_at": "1972-03-17T04:01:26.000000Z",
解决方法
您将必须阅读Laravel Resources
构建API时,您可能需要一个转换层,该转换层位于Eloquent模型和实际返回给应用程序用户的JSON响应之间。 Laravel的资源类使您可以表达而轻松地将模型和模型集合转换为JSON。
文档写得很好,易于阅读。它应该具有您需要的一切。
您将需要阅读Writing Resources一章,其中说明了如何处理关系。
,您需要进行两项更改。
1)从发布表中删除post_id并将其放置在评论表中。
2)编写查询
Post::with('comment','user')->get();