Php 如何从具有一对多关系的3个表中获取数据

Php 如何从具有一对多关系的3个表中获取数据,php,mysql,laravel,laravel-blade,Php,Mysql,Laravel,Laravel Blade,我有一个名为SCORES的表,表内有一个名为subject\u id的外键,该外键与表名为SUBJECTS的外键是一对多的关系,表内有一个名为user\u id的外键,该外键与表名为USERS的外键是一对多的关系,现在我可以从分数表中显示主题列表了,现在如何获得用户名谁的主题id等于用户id 控制器: 看法 您需要在分数模型中使用belongTo关系 public function user(){ return $this->belongsTo(User::class,'subjec

我有一个名为SCORES的表,表内有一个名为subject\u id的外键,该外键与表名为SUBJECTS的外键是一对多的关系,表内有一个名为user\u id的外键,该外键与表名为USERS的外键是一对多的关系,现在我可以从分数表中显示主题列表了,现在如何获得用户名谁的主题id等于用户id

控制器:

看法

您需要在分数模型中使用belongTo关系

public function user(){
   return $this->belongsTo(User::class,'subject_id ');
}
现在您可以获得类似这样的用户名

$scores = Score::with('lead','subject')->with('user')->where('lead_id','=',$id)->get();
Index.php }

试试这个
希望这能奏效。

从聊天讨论中,您发现主题和用户模型之间存在某种关系。您正在分数表中使用科目id,并且您的分数模型与科目模型具有belongsTo关系。因此,是的,您可以像这样获取用户详细信息

{{$score->subject->user->name}}

请不要发布这样的答案,因为无法回答。好的,谢谢你在分数表中查看你有用户id和科目id吗?我的分数表中只有科目id,先生,你怎么知道,哪个分数属于哪个用户?分数到主题没有问题,它的主题到用户我想得到主题的用户..是的,这就是为什么你需要分数表中的用户id字段,然后你可以在分数模型中创建一个belongsTo关系并获取用户先生,分数表只有主题id,如果我与“用户”一起使用,我会得到关系错误。请您显示数据库结构或迁移。谢谢,先生,顺便问一下,我可以有后续问题吗?只是想了解如何处理与此主题相关的问题……当然,那是什么?
$scores = Score::with('lead','subject')->with('user')->where('lead_id','=',$id)->get();
      $posts = Posts::read_all();

      foreach ( $posts as $post )
 {
         echo $post->post_name ."<br>";
          echo $post->post_text ."<br>";

$categories_array = Posts::get_cats_by_post_id($post->id);

foreach ($categories_array as $category)
{
    echo "&bull;". $category->category_name ."<br>";
}
$sql = "SELECT  cats_to_posts.cats_id
        FROM    cats_to_posts
        WHERE   cats_to_posts.post_id = {$id}";

$result = $db->exe_query($sql);

$cat_id_array = array(); // stores array of category ids that match post ids

while ( $record = $result->fetch_object() )
{
    $cat_id_array[] = $record;
}

$cat_name_array = array(); // stores array of category names that match category ids
foreach($cat_id_array as $cat_id)
{
    $new_sql = "SELECT  category_name
                FROM    categories
                WHERE   id = ". $cat_id->cats_id;

    $new_result = $db->exe_query($new_sql);

    while ( $new_record = $new_result->fetch_object() )
    {
        $cat_name_array[] = $new_record;
    }

}

return $cat_name_array;
{{$score->subject->user->name}}