donglikuang8145 2016-05-04 20:19
浏览 37

使用帖子类别和用户首选项在Laravel中构建博客

I'm building a blog for fun. In my blog, I have users, posts, and a fixed list of predefined categories.

1) Posts belong to many categories. 2) Users can specify category preferences, and therefore belong to many categories.

I have this set up as a series of many-to-many relationships:

In User.php:

/**
* A user belongs to many categories
*/
public function categoryPreferences()
{
    return $this->belongsToMany('App\Category');
}

In Post.php:

/**
* A Post Can Have Many Likes
*
* @return \Illuminiate\Database\Eloquent\Relations\belongsToMany
*/

public function categories()
{
return $this->belongsToMany('App\Category');
}

And the inverse of each in Category.php:

/**
* A category belongs to many users
*/
public function users()
{
return $this->belongsToMany('App\User');
}

/**
* A category belongs to many posts.
*
* @return \Illuminiate\Database\Eloquent\Relations\belongsToMany
*/

public function posts()
{
return $this->belongsToMany('App\Post');
}

I have corresponding category_post and category_user join tables to support each relationship. However, I may be thinking about this incorrectly.

I would like to display a loop of posts that belong to categories that users have specified, but can't work through how to do that. I can easily collect a user's category preferences with:

$categories = $user->categoryPreferences->pluck('id');

And can do the same for posts:

$categories = $post->categories->pluck('id')

However, I'm unsure how to merge the two collections together. I've looked into polymorphism, but that doesn't seem quite right. Can someone point me toward the correct concept?

  • 写回答

2条回答 默认 最新

  • dongzhao3040 2016-05-05 00:25
    关注

    I think, better use Query Builder instead ORM, code will be better to reading and writing.

    评论

报告相同问题?

悬赏问题

  • ¥15 Oracle中如何从clob类型截取特定字符串后面的字符
  • ¥15 想通过pywinauto自动电机应用程序按钮,但是找不到应用程序按钮信息
  • ¥15 MATLAB中streamslice问题
  • ¥15 如何在炒股软件中,爬到我想看的日k线
  • ¥15 51单片机中C语言怎么做到下面类似的功能的函数(相关搜索:c语言)
  • ¥15 seatunnel 怎么配置Elasticsearch
  • ¥15 PSCAD安装问题 ERROR: Visual Studio 2013, 2015, 2017 or 2019 is not found in the system.
  • ¥15 (标签-MATLAB|关键词-多址)
  • ¥15 关于#MATLAB#的问题,如何解决?(相关搜索:信噪比,系统容量)
  • ¥500 52810做蓝牙接受端