Laravel 我应该在哪个控制器中为处于关系中的模型编写逻辑

Laravel 我应该在哪个控制器中为处于关系中的模型编写逻辑,laravel,model-view-controller,eloquent,blogs,Laravel,Model View Controller,Eloquent,Blogs,我正在与每个人都有帖子的用户建立一个博客。当然,我有一个UserController、PostController和一个User-and-Post模型 用户模型与Post模型有一对多的关系,如下所示 // User Model public function posts() { return $this->hasMany('App\Post'); } 我想通过使用获取特定用户的所有帖子 // UserController or PostController

我正在与每个人都有帖子的用户建立一个博客。当然,我有一个UserController、PostController和一个User-and-Post模型

用户模型与Post模型有一对多的关系,如下所示

// User Model
public function posts()
    {
        return $this->hasMany('App\Post');
    }
我想通过使用获取特定用户的所有帖子

// UserController or PostController...
$posts = User::find($id)->posts()->get()
我应该在UserController中写入此逻辑(因为它使用用户模型)还是应该在PostController中写入此逻辑(因为它返回POST)


注意:如果此问题格式不正确,请原谅,这是我的第一个堆栈溢出问题,thanx

在您的模型中
用户
放置关系

public function posts()
{
    return $this->hasMany('App\Post','foreign_key','local_key');
}
UserController
PostController
中,使用

$posts = User::find($id);
foreach($posts->posts as $post)
{
  echo $post->title;
}

在您的模型中
User
放置关系

public function posts()
{
    return $this->hasMany('App\Post','foreign_key','local_key');
}
UserController
PostController
中,使用

$posts = User::find($id);
foreach($posts->posts as $post)
{
  echo $post->title;
}

您可以在
UserController
PostController

$user = User::with('posts')->whereId($id)->first();
echo '<pre>';
print_r($user->toArray());
exit;
$user=user::with('posts')->whereId($id)->first();
回声';
打印($user->toArray());
出口

您将获得
user
和所有
posts

您可以在
UserController
PostController

$user = User::with('posts')->whereId($id)->first();
echo '<pre>';
print_r($user->toArray());
exit;
$user=user::with('posts')->whereId($id)->first();
回声';
打印($user->toArray());
出口

您将获得
用户
和所有
帖子

您可以从两个控制器进行查询。从何处查询关系取决于从何处以及如何获取数据

例如,如果您在用户配置文件页面上显示与用户相关的帖子以及其他生物数据等,那么您将调用UserController中的关系

另一方面,假设您希望在搜索页面上显示与作者相关的帖子,那么最好在PostController中通过关系查询这些帖子


简而言之,这是一个基于方便和优化的选择

您可以从两个控制器进行查询。从何处查询关系取决于从何处以及如何获取数据

例如,如果您在用户配置文件页面上显示与用户相关的帖子以及其他生物数据等,那么您将调用UserController中的关系

另一方面,假设您希望在搜索页面上显示与作者相关的帖子,那么最好在PostController中通过关系查询这些帖子


简而言之,这是一个基于方便和优化的选择

实际上,您只需像创建关系一样创建关系,然后就可以像您描述的那样,使用
User::find($id)->posts()->get()
在任何地方调用它

因此,例如,如果需要在视图上返回用户的帖子,可以在UserController上执行类似操作:

// Post Model
public function user()
{
    return $this->belongsTo('App\User');
}
此外,如果您希望以另一种方式(知道谁是帖子背后的用户),可以使用
belongsTo()
在帖子模型上创建关系


如果这有帮助,请告诉我。

实际上,您只需要像以前那样创建关系,然后就可以像您描述的那样,使用
User::find($id)->posts()->get()
在任何地方调用它

因此,例如,如果需要在视图上返回用户的帖子,可以在UserController上执行类似操作:

// Post Model
public function user()
{
    return $this->belongsTo('App\User');
}
此外,如果您希望以另一种方式(知道谁是帖子背后的用户),可以使用
belongsTo()
在帖子模型上创建关系


如果这有帮助,请告诉我。

事实上,你只需要像以前那样建立关系,然后你可以随意称呼它。另外,如果你想用另一种方式(知道谁是帖子背后的用户),你可以使用
belongsTo()
在你的帖子模型上创建一个关系。实际上,你只需要按照你的方式创建关系,然后你可以随意调用它。另外,如果你想换一种方式(知道谁是帖子背后的用户),你可以使用
belongsTo()
在你的帖子模型上创建一种关系。非常感谢你,卢卡斯,这确实帮助了很多,我想我现在对如何组织我的帖子有了更清晰的认识methods@JonathandeKock不客气,先生。很高兴我能帮忙!非常感谢你,卢卡斯,这确实帮了大忙,我想我现在对如何组织我的工作有了更清晰的认识methods@JonathandeKock不客气,先生。很高兴我能帮忙!