问题标签 [polymorphic-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 回答
162 浏览

laravel - 查询laravel多态多对多关系

我有 Estate_object 表,其中包含有关房地产的信息,例如:地址、城市、地区等。然后我有一个单独的表,其中仅包含对象的特定属性,例如表中的一个是 objects_near。我为此制作了单独的表,因为这些模型中的每一个都可以保存多个值(它们是复选框),例如 objects_near 不能保存值,例如 - 停车、机场、查看、存储等。所以为了转义我制作的 Estate_object 表中不必要的列和空字段Estate_objects 表和保存属性的表之间的多态多对多关系。在我看来,我想做一个过滤器并从 Estate_object 表中查询东西工作正常。要过滤属于一个或多个房地产对象的属性,我有复选框。例如,要查询庄园附近的对象,我有带有多个选项的复选框。

这就是我的复选框的样子:

Estate_object_near 模型:

EstateObj 模型:

房地产对象控制器:

如果我转储 $obj,我将获得与数据透视表 'estateable' 的关系,并且我可以看到哪个属性与特定的房地产 obj 相关,但是当我尝试执行时,它会显示 SQLSTATE[HY093]:无效参数号:混合命名和位置参数。我也尝试使用 whereHas 函数,但随后出现此错误 - 传递给 Illuminate\Database\Eloquent 的参数 1 必须是一个实例。

也尝试过 whereHasMorph :

这导致“调用未定义的方法 App\Models\EstateObj::estateable()”

非常感谢您的建议。

0 投票
1 回答
177 浏览

php - 如何在 Laravel (7) 中保存多态可变形模型的附加/额外列?

从 Laravel 文档网站获取多对多多态关系示例。

在创建带有标签的帖子/视频或创建带有帖子/视频的标签时,如何将数据插入extra_column_a和列?extra_column_b

taggables当表有额外的列时,我是否需要为表创建模型类?

0 投票
1 回答
38 浏览

laravel - 如何检索嵌套的多态关系

在多语言应用程序中,我的应用程序中有这些具有多态关系的模型:

  • 邮政
  • 类别
  • 标签
  • 翻译

它们之间的这些关系:

这是我使用的迁移:

我有这样的特征来定义关系:

我试图通过翻译获取所有类别并将它们传递给视图:

鉴于基于当前语言环境,我想获得类别名称的翻译,但我不知道如何?如果您能帮我解决这个问题,我将不胜感激。

在类别模型中,我尝试编写这样的函数来获取当前翻译:

但它不起作用。鉴于我想使用类似的东西:

0 投票
0 回答
29 浏览

laravel - 如何检索两个模型之间的关系,其他模型与它们都具有多态关系

我有这两个模型:Tag并且Translate,我有这些表:、、、、tags标签模型使用可翻译。translatestranslatables

我的表格列是这样的:

我想编写一个函数来获取标签的当前翻译,app locale这意味着我应该根据可翻译表数据查询翻译表,并在翻译表中使用translateble_idtranslatable_type查找 id 并根据 lang 获取名称。你知道我该怎么做吗?

这是可翻译的特征:

这就是我获取语言环境的方式:

我使用查询构建器获得标签翻译,例如:

但我想在模型和雄辩中使用一个函数。

0 投票
1 回答
22 浏览

mysql - 查询多态关系

我不是真正的后端专家。我在这里有一些表格列,notifications这些列已被 Laravel 中的多态关系使用。

我想获取sendto_type具有属性“App\User”的列,它是使用 Laravel 中的多态关系制作的,并从名为users. 我也曾经sendto_id有过users表的关系。这是否可能,如果是,我将如何做到这一点。

我尝试查询 SELECT * FROM 通知 WHERE sendto_type = "App\User"。它成功但没有返回结果。请帮忙。

0 投票
0 回答
169 浏览

laravel - Laravel 中的自定义多态类型

我正在处理多态关系并创建了一个多态表,其中的列如下

默认的commentable_type将分别是App\Models\PostApp\Models\Video

我不想将这些值用于commentable_type想要一些自定义值,找到了一种使用 morphMap 的方法,例如 -

寻找其他解决方案,例如可以在模型中使用的标志或方法以实现某些结果

0 投票
0 回答
14 浏览

laravel - 查询 Laravel 多态关系的标准和专业的方法是什么?

尝试根据多态关系的结果获取人员表。这样做的专业标准方法是什么?非常感谢!

可插入模型

人物模型

0 投票
0 回答
37 浏览

laravel - 我想在 Laravel 多态关系中创建多个自定义外键?

我有个问题

我想看

我想在 Laravel 多态关系中创建多个自定义外键?

这是如何正确定义的???

这个结构对吗???

0 投票
1 回答
81 浏览

laravel - 如何删除或销毁多态关系laravel?

我现在正在尝试学习多态类型关系,但我在删除数据时遇到问题
有解决问题的解决方案或解决此问题的一些参考吗?

谢谢

0 投票
1 回答
375 浏览

laravel - Laravel 8: One To Many Polymorphic: Relate same child to different parents

I used the one-to-many polymorphic relationship like described in the laravel documentation, to be able to relate different parent models to one child model. i have assumed, that i would be able to assign different parent models to the same child model. but this does not work. as soon as i create a new relation with another parent model to the same child, the old relation is replaced.

Example:

A, B and C are parent models, each with one data-record (id=1).

X is the child model with one data-record (id=1)

I can't do something like that with the common methods:

A(id=1) <-> X(id=1)

B(id=1) <-> X(id=1)

C(id=1) <-> X(id=1)

Since the last creation of a relation always overwrites the previous one. In this example one relation would remain (C(id=1) <-> X(id=1))

I am able to do that with a many-to-many polymorphic implementation - but this is actually not what i want, since i do not want the parent models to be able to have more than one relation to the child model. (altough i could rule that out by creating a composite key within the *able table on the corresponding fields)

This is the actual code, that should assign one image to multiple parent models (but only the last save inside the loop remains - if i add a break at the end of the loop, the first one is saved):