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

Laravel 5.6 API资源不显示关系数据

苏涛
2023-03-14

我想得到关系数据到json使用laravel 5.6资源

当我查询,我得到response.data.created_by作为一个对象。
但在API Resources中,它只显示id,而不是response.response.data.created_by中的created_by对象。框。
*数据是使用急切读取。

url:http://localhost:8000/api/product/unit
响应:


    {
        "data": [
            {
                "id": 1,
                "unit": "Meter",
                "symbol": "m",
                "decimal": 1,
                +----------------------------------------------------------------------------------+
                |"created_by": {                                                                   |
                |    "id": 1,                                                                      |
                |    "name": "Admin",                                                              |
                |    "email": "admin@gmail.com",                                                   |
                |    "api_token": "$2y$10$.c7eJGS6x/C8JN9Hd.Qc1OgPUS8txMDuIHjZNBRRlHQVGrYbJcC5u",  |
                |    "created_at": "2018-05-09 15:45:59",                                          |
                |    "updated_at": "2018-06-08 15:38:41"                                           |
                |},                                                                                |
                +----------------------------------------------------------------------------------+
                "updated_by": {
                    "id": 1,
                    "name": "Admin",
                    "email": "admin@gmail.com",
                    "api_token": "$2y$10$.c7eJGS6x/C8JN9Hd.Qc1OgPUS8txMDuIHjZNBRRlHQVGrYbJcC5u",
                    "created_at": "2018-05-09 15:45:59",
                    "updated_at": "2018-06-08 15:38:41"
                },
                "created_at": "2018-06-19 00:38:54",
                "updated_at": "2018-06-19 20:00:16"
            }
        ],
        "resource": {
            "data": [
                {
                    "id": 1,
                    "unit": "Meter",
                    "symbol": "m",
                    "decimal": 1,
                    +----------------+
                    |"createdBy": 1, |
                    +----------------+
                    "updatedBy": 1,
                    "createdAt": {
                        "date": "2018-06-19 00:38:54.000000",
                        "timezone_type": 3,
                        "timezone": "Asia/Kolkata"
                    },
                    "updatedAt": {
                        "date": "2018-06-19 20:00:16.000000",
                        "timezone_type": 3,
                        "timezone": "Asia/Kolkata"
                    }
                }
            ]
        }
    }

UnitController.php:


    namespace App\Http\Controllers\Product;

    use App\Models\Product\Unit;
    use Illuminate\Http\Request;
    use App\Http\Controllers\Controller;
    use Illuminate\Support\Facades\Validator;
    use App\Http\Resources\Product\UnitResourceCollection;
    use App\Http\Resources\Product\UnitResource;
    use Illuminate\Validation\ValidationException;

    class UnitController extends Controller {
        public function index()
        {
            $units = Unit::with(['created_by', 'updated_by'])->get();
            +------------------------------------------------------+
            |return [                                              |
            |    'data' => $units,                                 |
            |    'resource' => new UnitResourceCollection($units)  |
            |];                                                    |
            +------------------------------------------------------+
        }
    }

单位型号:


    namespace App\Models\Product;
    use Illuminate\Database\Eloquent\Model;
    class Unit extends Model
    {
        public function created_by() {
            return $this->belongsTo('App\User', 'created_by', 'id');
        }

        public function updated_by() {
            return $this->belongsTo('App\User', 'updated_by', 'id');
        }
    }
    
UnitResource.php
<pre>
namespace App\Http\Resources\Product;

use App\Http\Resources\UserResource;
use Illuminate\Http\Resources\Json\JsonResource;

class UnitResource extends JsonResource
{
    public function toArray($request)
    {
        return [
            'id' => $this->id,
            'unit' => $this->unit,
            'symbol' => $this->symbol,
            'decimal' => $this->decimal,
            'createdBy' => $this->created_by,
            'updatedBy' => $this->updated_by,
            'createdAt' => $this->created_at,
            'updatedAt' => $this->updated_at
        ];
    }
}

共有1个答案

冉昊
2023-03-14

问题出在UnitModel中:我必须使用不同的方法名称created_by()而不是列名称created_by

更改以下代码后,它正在工作:

Unit.php型号:

由()创建的公共函数{-

公共函数updated_by(){


UnitController.phpController:

$units=Unit::with(['created_by','updated_by']))-


UnitResource.phpResource:

'createdBy'=

“更新者”=

 类似资料:
  • 资源分配特点 coolie 是前端工程的构建方案,以页面(html)为导向,JS 和 CSS 都是 HTML 的描述文件。 <!--app.html--> <!doctype html> <link href="style.css" rel="stylesheet"> <script src="app.js"></script> 如上,style.css是app.html的样式修饰,app.

  • 问题内容: 在AngularJS中定义隔离资源的常用方法是: 我正在尝试找出编写与其他模型相关的模型的最佳方法,例如具有1个或多个s的模型。我的第一个想法是: 创建和作为独立资源模型 编写一个查询并观察结果数组的控制器 当结果数组更改时,请查询的所有商品ID,并使用扩展信息来装饰对象。 似乎有点混乱。有没有更优雅的方式? 问题答案: 上面的东西可以解决您的问题吗?然后,您将其用作 Angular的

  • 问题内容: 关闭。 此问题不符合堆栈溢出准则。它当前不接受答案。 想要改善这个问题吗? 更新问题,使它成为Stack Overflow的主题。 2年前关闭。 改善这个问题 我正在寻找有关关系数据库设计,性能调整等最佳实践的书/站点/教程。有很多“这里是归一化,这是ER图,”,但在实际示例中却没有太多。有人有想法么? 问题答案: 图书:仅凡人的数据库设计

  • null 取照片: }

  • 问题截图我正在用Sceneform构建一个非常简单的应用程序,目前只有一个带有sceneview的活动,我在其中添加了一个可渲染的。我想加载我在blender上创建的行星的简单模型,并将其导出为obj文件作为可渲染文件。但是,对象会加载和显示,但根本没有纹理或凹凸贴图,它只是灰色的。我需要知道我的代码有什么问题导致纹理无法加载。调试应用程序或logcat中的错误时,我没有收到任何错误消息。 当我使

  • 我正在创建一个石头、布、剪刀的游戏,我想让它显示个人的赢、输和平局。 当我运行它时,它总是说我输了。 我认为问题是要增加正确值的if-then语句。 我认为最后一件事可能是生成计算机选择的方法。 我该怎么解决这个问题?