当前位置: 首页 > 知识库问答 >
问题:

急切加载访问数据透视表

费辰阳
2023-03-14

我有3个模型

1-书:

class Book extends Model
{
protected $guarded=[];
public function users(){return $this->belongsToMany(User::class);}  
public function bookUser(){return $this->hasMany(BookUser::class);} 
}

2-用户

class User extends Authenticatable
{
protected $guarded = [];
public function books(){return $this->belongsToMany(Book::class);}

3-书签用户

class BookUser extends Model
{
protected $guarded = [];
protected $table = 'book_user';
public function book(){return $this->belongsTo(Book::class);}
public function user(){return $this->belongsTo(User::class) ; }
}

bookuser迁移:

Schema::create('book_user', function (Blueprint $table) {
        $table->id();
        $table->timestamps();
        $table->foreignId('book_id')->constrained();
        $table->foreignId('user_id')->constrained();
        $table->boolean('like')->nullable()->default(0);
    });

我试图得到所有的书籍与喜欢的只是当前的用户

public function index()
{
    id=Auth::user()->id;
    $books=Book::with('users')->get();
    return response()->json($books);   
}

这是我得到的:

[
{
    "id": 1,
    "created_at": "2021-03-22T14:16:30.000000Z",
    "updated_at": "2021-03-22T14:16:30.000000Z",
    "name": "power",
    "image": "978014444447899.jpg",
    "users": [
        {
            "id": 1,
            "name": "mark",
            "type": "reader",
            "image": null,
            "created_at": "2021-03-22T13:59:26.000000Z",
            "updated_at": "2021-03-22T13:59:26.000000Z",
            "pivot": {
                "book_id": 1,
                "user_id": 1,
                "created_at": "2021-03-22T14:20:26.000000Z",
                "updated_at": "2021-03-22T14:39:56.000000Z",
                "like": 1
            }
        }
    ]
}]

我如何访问数据透视表...或者如何得到那样的??我正在尝试,但id不起作用

 $id=Auth::user()->id;
    
    $books=Book::with('users',function($query) {
    return $query->where('user.id','=',$id);
    })->get();

共有1个答案

山煜祺
2023-03-14

您只需使用use$ID注入函数作用域

$id=Auth::user()->id;
    
$books=Book::with('users',function($query) use($id) {
    return $query->where('user.id','=',$id);
})->get();
 类似资料:
  • 我通过提示检查了它在EclipseLink中的工作情况: 这个链接http://blog.ringerc.id.au/2012/06/jpa2-is-very-inflexible-with-eagerlazy.html暗示通过Hibernate是不可能的,建议手动获取。但是,我无法理解如何通过HQL或标准来实现它,特别是如何获得不在实体上但仅存在于数据库上的child.parent_id列。即避

  • 我正在组装一个简单的购物车系统,使用Laravel和Vue.js,来出售照片。每张照片都有不同的尺寸,每个尺寸的价格都不同。 我有以下表格: 我正在使用Vue.js对我的购物车控制器进行API调用,以操纵购物车。当用户单击“添加到篮子”按钮时,它会传递照片id和大小id。当然,我想从数据库而不是客户端获取所选项目的价格,以防止任何无礼行为,这自然意味着查询pivot表。 我的问题是,使用传递给控制

  • A 数据透视表介绍 B.1 什么是数据透视表? 数据透视表是一种可以快速汇总、分析大量数据表格的交互式工具。使用数据透视表可以按照数据表格的不同字段从多个角度进行透视,并建立交叉表格,用以查看数据表格不同层面的汇总信息、分析结果以及摘要数据。使用数据透视表可以深入分析数值数据,以帮助用户发现关键数据,并做出有关企业中关键数据的决策。 数据透视表是针对以下用途特别设计的:以友好的方式,查看大量的数据

  • 数据透视表显示二维交集的度量值,并在表格视图中表示数据。 图表属性 选择图表类型后,可以更改其属性来自定义图表: 选项 描述 常规 背景颜色 设置图表区域的背景颜色。 不透明度 设置背景颜色的不透明度。 显示边框 显示图表外部边框。 边界颜色 设置图表外部边框的颜色。 显示标题 显示图表的主要标题。 标题 指定图表的标题。 标题字体 设置标题的字体样式。 位置 设置标题的位置。 对齐 设置标题的水

  • 数据透视表显示二维交集的度量值,并在表格视图中表示数据。 图表属性 选择图表类型后,可以更改其属性来自定义图表: 选项 描述 常规 背景颜色 设置图表区域的背景颜色。 显示边框 显示图表外部边框。 边界颜色 设置图表外部边框的颜色。 显示标题 显示图表的主要标题。 标题 指定图表的标题。 标题字体 设置标题的字体样式。 位置 设置标题的位置。 对齐 设置标题的水平对齐方式。 数据 字体 设置字段名

  • 数据透视表显示二维交集的度量值,并在表格视图中表示数据。 图表属性 选择图表类型后,可以更改其属性来自定义图表: 选项 描述 常规 背景颜色 设置图表区域的背景颜色。 不透明度 设置背景颜色的不透明度。 显示边框 显示图表外部边框。 边界颜色 设置图表外部边框的颜色。 显示标题 显示图表的主要标题。 标题 指定图表的标题。 标题字体 设置标题的字体样式。 位置 设置标题的位置。 对齐 设置标题的水