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

雄辩的ORM模型两个或多个表

卫仲卿
2023-03-14

我有一个无法解决的问题。我有一个包含TitleID、TextID、ImageID的新闻表。还有三张表格,标题,文本,图片。我想把它们都放在一个模型里。但当我尝试时,得到的结果就像数组中的数组。但我想要的是:

[ News: [ { ID, Title, Text, Image } ] ]

雄辩的ORM对此的反应如下:

[ News: [ { ID, Title: [ID, Title], Text: [ID, Text], Image: [ID, Image] } ] ]

数据库结构

新闻=

+-----------------+-------------+------+-----+---------+----------------+
| Field           | Type        | Null | Key | Default | Extra          |
+-----------------+-------------+------+-----+---------+----------------+
| ID              | int(11)     | NO   | PRI | NULL    | auto_increment |
| TitleID         | int(11)     | NO   |     | NULL    |                |
| TextID          | int(11)     | NO   |     | NULL    |                |
| ImageID         | int(11)     | NO   |     | NULL    |                |
| CatID           | int(11)     | NO   |     | NULL    |                |
| OlusturmaZamani | datetime    | NO   |     | NULL    |                |
| YayinZamani     | datetime    | NO   |     | NULL    |                |
| DuzenlemeZamani | datetime    | YES  |     | NULL    |                |
| Onay            | tinyint(11) | NO   |     | NULL    |                |
| Hit             | int(11)     | YES  |     | NULL    |                |
+-----------------+-------------+------+-----+---------+----------------+

头衔=

+------------+---------+------+-----+---------+----------------+
| Field      | Type    | Null | Key | Default | Extra          |
+------------+---------+------+-----+---------+----------------+
| ID         | int(11) | NO   | PRI | NULL    | auto_increment |
| TitleText  | text    | NO   |     | NULL    |                |
+------------+---------+------+-----+---------+----------------+

其他表类似于标题表。

共有3个答案

申屠泳
2023-03-14

听起来ORM“过度正常化”。没有合理的理由将新闻属性(如标题、文本和图像)放在单独的表中,这些表由“id”连接。

“急于加载”听起来像是一个乱七八糟的词,让人觉得列在新闻表中,而它们却不在表中。这会导致不必要的低效率。

董和泽
2023-03-14

尝试急切加载。

如果已在新闻、标题、文本和图像表之间创建了关系,则可以通过快速加载加载关系模型。

$news = News::with('title','text','image)->find(1);
邢献
2023-03-14

您将标题和文本提取到自己的表中有什么原因吗?

对你来说,一个解决方案就像你在这篇文章中看到的:

向加载的Laravel/雄辩模型添加自定义属性?

针对您的示例进行了调整:

假设你把关系改为“标题表”,只是为了避免碰撞

class News extends Eloquent {

    protected $appends = array('title');

    public function getTitleAttribute()
    {
        return $this->titleTable->TitleText;  
    }
}
 类似资料:
  • 因此,我在JeffreyWay的屏幕广播中了解到,我可以使用Eloquent从注入到另一个模型的模型中获取相关id。 我正在关注他关于Laravel 5.4的系列报道。 在这里,我有一个用户到帖子的一对多关系。 应用程序/帖子 在我的用户模型中,我有一个发布方法,其中注入了发布模型。发布方法用于创建进入数据库的发布条目。 应用/用户 然后,我在PostsController中有一个存储方法,它在我

  • 如何使用laravel雄辩的ORM关系在多个表中发出一个插入请求。即 表1:用户 id 姓名 电子邮件 表2:员额 id 表3:图像 id 用户id 邮政id 图像名称 关系 表id引用了其他两个表中的 表与

  • 我正在尝试使用Laravel雄辩的模型查询多个表,这些模型具有一对一、一对多和多对多的关系。 我有一个表,一个表,一个表和一个透视表。 每个表单有一个品牌和一个用户: 品牌没有任何外键: 用户没有任何外键: 有一个数据透视表可以创建多对多的关系,用于创建拥有许多用户(如品牌成员)的品牌组: 我试图通过直接所有权()或品牌成员身份获取属于用户的所有表单,通过多对多透视表获取用户所属的所有品牌的所有表

  • 简介: 我有这些表与他们的模型: 地址表-- 规则: 每个用户只能有一个地址 这里可以进行两种可能的关系规划: > 用户有一个地址和地址属性To User[即一对一关系],但缺点是外键位于地址表中,即user_id字段,通过与其他模型[公司和财产]重复相同的关系,我们将获得地址表中的另外两个外键是[company_id和property_id],那么我们将最终得到3个外键用于3个型号,但每行记录只

  • 在有说服力的ORM上,是否有一种较短的方法在Laravel中插入数据? 目前我正在这样做: 就像你看到的,所有的列都像属性一样命名。 我知道您可以将对象与all()函数和fetch()一起使用。但是我从另一个对象(soap服务器)获取数据。 有没有办法转换这个?也许在模型上?

  • 很难在这里尝试检索特定的记录,我需要的ID和日期匹配,这里是我的代码: