gpt4 book ai didi

mysql - laravel 两个相同的 ownTo() 关系,一个返回数组,另一个返回字符串

转载 作者:行者123 更新时间:2023-11-29 12:26:26 25 4
gpt4 key购买 nike

我不明白,我有两个相同设置的外键和两个 belongsTo() 函数,但其​​中一个不能正常工作,而不是返回一个数组,它只返回一个字符串值来自数据库。

这是我在数据库中的表格。

表格页面

-----------------------------------------------------
| id | author | title | content | status |
-----------------------------------------------------
| 1 | 1 | page one title | page text | 1 |
-----------------------------------------------------
| 2 | 1 | page one title | page text | 2 |
-----------------------------------------------------

表用户

----------------------------------------------
| id | username | email | role |
----------------------------------------------
| 1 | darth | darth@deathstar.dot | 1 |
----------------------------------------------

表格page_statuses

--------------------------
| id | name | value |
--------------------------
| 1 | Published | 1 |
--------------------------
| 2 | Draft | 2 |
--------------------------
| 3 | Review | 3 |
--------------------------

因此,pages 表中的作者和状态字段是表 users 和表 page_statuses 的外键。

页面中的作者和状态这两个字段都是整数且无符号,也是索引。当我检查 phpmyadmin 中的关系时,我在页面表上得到了这个:

----------------------------------------------------------------------
| Column | Foreign key constraint (INNODB) | Keyname |
----------------------------------------------------------------------
| author | `laravell`.`users`.`id` | pages_author_foreign |
----------------------------------------------------------------------
| status | `laravell`.`page_statuses`.`value` | pages_status_foreign |
----------------------------------------------------------------------

当我在作者和状态字段的页面表的数据库中输入一些数据时,我可以单击数字,它将引导我找到正确的数据(在 phpmyadmin 中)。例如,如果我单击作者编号,它会将我重定向到用户表并显示该作者的行,这样就可以了。

现在我已经设置了模型

models/
Page.php
PageStatus.php
User.php

最后我需要设置关系。在 Page.php 下我有

public function author() {
return $this->belongsTo('User', 'author', 'id');
}

public function pagestatus() {
return $this->belongsTo('PageStatus', 'status', 'value');
}

所以一切都设置正确,一切都应该正常工作,但有些东西却不起作用。

当我死亡并转储时,作者仅返回一个字符串,而 pagestatus 返回该行的数组。输出是

----------------------------------------------
| author | status |
----------------------------------------------
| 1 | {"id":2,"name":"Draft","value":2} |
----------------------------------------------

因此状态返回正确,而作者未返回正确。

最佳答案

您不能将关系命名为与外键列的名称相同!

更改其中之一应该可以,但我建议您将外键列更改为 author_id。然后,您也不需要在关系中指定外键列,因为您使用的是常规名称。

关于mysql - laravel 两个相同的 ownTo() 关系,一个返回数组,另一个返回字符串,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/28243460/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com