连接表并从多对多(Laravel)中获取

时间:2019-01-22 05:18:16

标签: laravel eloquent

用户表

<script>

    $(document).ready(function(){
        $.getJSON("getlist.php", function(return_data){

            return_data.forEach(function(e,i){
                $('#catn').append('<option value= "'+e.catname+'">'+e.catname+'</option>');
            });

        });
    });

    $(document).ready(function(){
        $.getJSON("list2.php",{'catname':catname},function(return_data){

            return_data.forEach(function(h,i){
                $('#scatn').append('<option value= "'+h.subcatname+'">'+h.subcatname+'</option>');
            });

        });
    });

发布表

<?php   
 $catname=$_GET['catname'];
 $conn =mysqli_connect("localhost", "root", "", "project"); 

      $sql = "SELECT * FROM catd where catname='$catname'";  
      $result = mysqli_query($conn, $sql); 


$scat_arr = array();
 while( $row = mysqli_fetch_array($result) )
 {
    $catid = $row['cid'];
    $catname = $row['catname'];
    $scat_arr[] = array("cid" => $catid, "catname" => $catname);
}
echo json_encode($scat_arr);
 ?>  

类别表

    |---------------------|------------------|
    |          id         |     email        |
    |---------------------|------------------|
    |     3               |   18             |
    |---------------------|------------------|

类别发布

    |---------------------|------------------|
    |     id              |     Title        |
    |---------------------|------------------|
    |     12              |   My Post        |
    |---------------------|------------------|

用户类别

    |---------------------|------------------|
    |     id              |     Title        |
    |---------------------|------------------|
    |     18              |   My Category    |
    |---------------------|------------------|

在此表结构中,我想通过一个查询根据其喜欢的类别获取具有任何给定用户ID的所有帖子。

我已经定义了所有模型的关系

类别:

    |---------------------|------------------|
    |     post_id         |     category_id  |
    |---------------------|------------------|
    |     12              |   18             |
    |---------------------|------------------|

帖子:

    |---------------------|------------------|
    |     user_id         |     category_id  |
    |---------------------|------------------|
    |     3               |   18             |
    |---------------------|------------------|

用户:

public function posts(){

     $this->belongsToMany(Post::class,'category-post','category_id','post_id')
}

2 个答案:

答案 0 :(得分:3)

可以使用您的关系模型尝试

$data = User::with("favCategories.categories.posts")->find($user_id);

//“ favCategories”首先获得所有喜欢的类别

//“类别”获取所有类别

//“帖子”明智地获取所有具有这些类别的帖子

答案 1 :(得分:-1)

这是一个雄辩的查询:

<?php
dd($posts = User::find(3) //user id 3
->categories()->where('id', 18) //favorite category id 18
->posts);