问题标签 [eloquent-relationship]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
338 浏览

php - Laravel 5.7 Eloquent Relation 上市

我正在尝试通过连接获取数据集,并且我想使用 eloquent 自动完成,无需手动查询。我也做了关系,但是当我尝试列出加入的数据时,它以某种方式做到了。

Laravel 5.7 版 MySQL 数据库

更新,添加了数据库模式。my_tab3s 表: my_tab3s

mytab1 表: 在此处输入图像描述

错误:

“SQLSTATE [42S22]:未找到列:1054 'where 子句'中的未知列'myTab1.my_tab3_id'(SQL:select * from myTab1 where myTab1. my_tab3_idin (1, 2))”

myTab3.php

myTab1.php

myTab3Controller.php 索引方法

查看零件

0 投票
1 回答
112 浏览

laravel - 无法在 eloquent 中使用 where

我在 Laravel 中使用 Eloquent ORM。有 2 个模型,User 和 Trans。User hasMany Trans, Trans belongsTo User。问题是当我使用查询时,它不起作用。

我尝试->get()在最后一个代码中使用,它仍然无法正常工作。我尝试->all()在最后一个代码中使用它仍然无法正常工作。我试了whereIn,还是不行。

用户模型

反式模型

控制器

我希望输出基于查询,其中日期基于用户输入,当我删除时->where,它可以工作并且输出是这样的。

0 投票
1 回答
520 浏览

php - 在事件监听器中同步多对多关系(Laravel 5.7)

Laravel App 有角色,每个Role都有权限(多对多)

每个用户都有多个角色(多对多)

当 Role 的权限发生变化/更新时,RolePermissionsChanged会触发 Event 并且监听器具有以下代码:

这必须更新permission_user表以将角色同步给用户。触发事件时,作业失败并出现错误:

Method Illuminate\Database\Eloquent\Collection::sync does not exist.

如果我将foreach循环中的行更改为App\User::find($user->id)->permissions()->sync($role_permissions);,它正在工作,但我知道它应该以另一种方式完成。谁能指导我哪里出错了。

编辑:

下边是RolePermissionsChanged::class

0 投票
2 回答
302 浏览

php - Laravel Eloquent BelongTo 模型访问失败

我正在尝试通过使用 Laravel Eloquent HasMany(反向)关系来获取数据,但我无法访问。每当我尝试时,它都会显示Trying to get property 'name' of non-object

我有两个模型。类别文章类别有很多文章。以下是模型:

类别模型

文章模型

文章控制器

查看刀片(admin.article.pending-posts)

在刀片中,我无法通过 eloquent BelongsTo 功能访问类别,也没有得到消息背后的原因:

ErrorException (E_ERROR) 试图获取非对象的属性“名称”(查看:C:\xampp\htdocs\joliadmin\resources\views\admin\article\pending-posts.blade.php)

0 投票
0 回答
988 浏览

laravel - Laravel:如何在 MorphPivot 中定义 belongsTo?

在我的项目中,存在多对多的多态关系(称为 Package (morphedByMany) 的模型的许多实例可以包含许多不同的内容类型(每个 MorphedToMany)。

我创建了一个数据透视表,其中包含一些我需要访问和查询的附加字段,因此我决定最好的办法是通过扩展 MorphPivot 创建一个 Pivot 模型。

查询现在很容易,但是,我无法通过关系访问内容(如果我查询 App\Packages::findOrFail(1)->contentType(),我可以做到这一点)。我知道我应该声明枢轴属于内容类型,但我不确定如何处理它,因为它可能属于任何变形的内容类型。

根据要求编辑 代码块

内容1

内容2

包裹

变形枢轴

数据透视表迁移

0 投票
1 回答
840 浏览

php - laravel 使用 in 子句模型名称连接多态数据透视表

我正在使用雄辩的多态关系来管理不同模型和其他称为公司的模型之间的数据透视表。

我有一个包含以下结构的数据透视表: 在此处输入图像描述

我必须使用 eloquent 查询构建器使用 model_id 和 model_type 在车辆表和数据透视表之间进行连接查询。但是当我这样做时:

此代码不返回任何结果。但是,如果我将第二个 on 子句更改为:

此代码运行正确并返回我想要的结果,但我认为这是获取结果的错误方法。

有人知道是否有办法让运行第一个代码?

感谢您的回复。

0 投票
1 回答
207 浏览

laravel - 使用 Laravel 和 Eloquent 的关系浏览模型

我正在做一个项目,我们有以下模型:

  • 物品种类
  • 项目子类型
  • 物品

作为一个例子,我会说:

ItemType : 硬件或软件

ItemSubtype:RAM、电源(如果是硬件)或应用程序、操作系统(如果是软件)

项目:4GB DDR4(如果是 RAM)或 MS Office 2019(如果应用程序)

这些是我看到的关系:

  1. 一个ItemType可以有多个ItemSubtype并且ItemSubtype只能属于一个ItemType
  2. 一个ItemSubtype可以有多个Item,一个Item只能属于一个ItemSubtype

在此处输入图像描述

这些是我的问题:

  1. 显然,一个Item只能属于一个ItemType。我是否需要在ItemItemType模型之间建立关系?
  2. 如果问题1返回true(这是整天编码的结果!)我应该使用什么样的关系?ItemType通过ItemSubtype (hasManyThrough)有很多Item?还是ItemType hasMany ItemItem belongsTo one ItemType?或者只是使用ItemSubtype作为中间模型,并通过ItemSubtype从Item转到ItemType ,反之亦然,而ItemTypeItem之间没有任何直接关系?
  3. 如果我不在ItemTypeItem模型之间创建关系,我是否需要在项目迁移中使用item_type_id ?

  4. 对此有不同的方法吗?

先感谢您!

0 投票
2 回答
2274 浏览

php - 在laravel中首先按关系排序

我有两个表:admins 和 log_doctor_infos。admins 表与 hasOne 和 log_doctor_infos throught doctor_id 有关系,就像这样。

在模型管理员中:

在模型 LogDoctorInfo 中:

我得到所有数据表单管理员表,我想排序记录与 log_doctor_infos 到顶部的关系。

黄色记录,与 log_doctor_infos 有关系,我想把它排在最前面。

编辑:我在这个查询中使用分页,我真的想获得黄色记录的数量。

谢谢阅读!

例子

在我的控制器中,我有自定义过滤器和分页。帮我。

0 投票
3 回答
1861 浏览

laravel - Laravel - 有一个或多个其他关系的雄辩关系

我现在正在学习 Laravel 和 Laravel 雄辩,现在我尝试使用 Laravel 中的关系来解决问题。这是我要归档的内容:

该数据库包含许多体育俱乐部。体育俱乐部有很多球队。每支球队都有比赛。团队表有一个名为 的列club_id。现在我想创建 Eloquent 关系以获取俱乐部的所有游戏。

这是我到目前为止得到的:

俱乐部模型

id => PRIMARY

游戏模型

home_id => FOREIGN KEY of team ; guest_id => FOREIGN KEY of team

团队模型

id => PRIMARY ; club_id => FOREIGN

在我的控制器中,我想做的就是Club::findOrFail($id)->games()

执行上面的代码会返回一个 SQL 错误,即 games 表没有名为 的列club_id

创建这种关系的正确方法是什么?

谢谢!

编辑

感谢 Nikola Gavric,我找到了获得所有比赛的方法——但仅限于俱乐部球队是主队或客队的情况。

这是关系:

如何获得 home_id 或 guest_id 与俱乐部球队匹配的比赛?此函数中的最后一个参数不允许使用数组。

0 投票
0 回答
133 浏览

laravel - 如何以雄辩的方式将第二张和第三张桌子连接在一起

我有三个模型 1.Document 2.Sharedoc 3.User

文档.php

Sharedoc.php

用户.php

控制器:

结果是:

在这个结果中,'document' 表加入了 'sharedoc' 和 'user' 表......但我希望 'document' 加入 'sharedoc',然后 'sharedoc' 加入 'user'...... 我该怎么做呢?