【问题标题】:How can I handle fake 1-n relationship in Laravel Backpack?如何在 Laravel Backpack 中处理虚假的 1-n 关系?
【发布时间】:2020-10-25 01:13:43
【问题描述】:

我的应用程序下有一个旧数据库,其中并非所有关系实际上都是 SQL 关系,但其中一些存储在字符串列中。

例如

Tables: Tags, Articles
Table Articles has 'tags_ids' column where I have '33;44;82;' (the tag ids)

我想知道我是否可以将 Laravel Backpack 关系 UI 与此类数据一起使用。

我肯定必须在获取和设置期间“改变”数据,但我找不到办法。

【问题讨论】:

    标签: php laravel relationship laravel-backpack


    【解决方案1】:

    我不认为 laravel 直接支持这样的关系。

    您当然可以在背包中写一个custom column template,它会在; 上爆炸$entry->tags_ids,查询标签以获取这些ID,然后循环显示它们。

    也就是说,恕我直言,您最好添加一个像 article_has_tag 这样的中间表来正确映射您的标签和文章,然后您就可以正常使用 laravel 和背包的所有内置功能。如果您仍然需要旧应用程序来处理原始数据结构,您可以为 articlesarticle_has_tag 表编写“插入/更新后”触发器以保持它们同步(注意不要导致无限循环当然)。

    【讨论】:

    • 谢谢,自定义列是一个很好的解决方案。关于中间表我会考虑的,你可以想象过去有隐藏的怪物。
    • 我个人在模型级别解决了这个问题。在具有该列的模型中,我将使用访问器或属性转换将该字符串转换为连接条目的集合/数组。然后我会使用select_from_array 列和字段。
    猜你喜欢
    • 1970-01-01
    • 2017-03-03
    • 1970-01-01
    • 2022-09-23
    • 2022-11-24
    • 1970-01-01
    • 2012-04-24
    • 1970-01-01
    • 2015-02-11
    相关资源
    最近更新 更多