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

Laravel 8 all()函数不将db值映射到模型属性

有玄天
2023-03-14

我对拉威尔是个新手,所以我想这是个新手问题。基本上,我尝试通过静态all()函数检索数据库数据。但不知何故,我的结果模型实例只填充属性数组中的数据,但所有模型属性都为null。

我有一条简单的路线

Route::get('/posts', function () {
    $posts = App\Models\Post::all();
    ddd($posts[0]);
    return view('posts', [
        'posts' => $posts,
    ]);
});

还有一个简单的模型

<?php

namespace App\Models;

use Illuminate\Database\Eloquent\Factories\HasFactory;
use Illuminate\Database\Eloquent\Model;

class Post extends Model
{
    use HasFactory;

    public $id;
    public $title;
    public $excerpt;
    public $body;
    public $published_at;
    public $category_id;

    protected $fillable = [
        'title',
        'excerpt',
        'body',
        'published_at',
        'category_id',
    ];

    protected $guarded = ['id'];

    public function category() {
        return $this->belongsTo(Category::class);
    }
}

这是ddd()返回的结果

App\Models\Post {#1225 ▼
  +id: null
  +title: null
  +excerpt: null
  +body: null
  +published_at: null
  +category_id: null
  #fillable: array:5 [▶]
  #guarded: array:1 [▶]
  #connection: "mysql"
  #table: "posts"
  #primaryKey: "id"
  #keyType: "int"
  +incrementing: true
  #with: []
  #withCount: []
  +preventsLazyLoading: false
  #perPage: 15
  +exists: true
  +wasRecentlyCreated: false
  #escapeWhenCastingToString: false
  #attributes: array:8 [▼
    "id" => 1
    "title" => "Dedrick Ebert DDS"
    "excerpt" => "Possimus sit animi enim error. Omnis maxime ducimus nesciunt omnis quibusdam."
    "body" => "Neque est aliquid est placeat. Eaque nihil nobis nobis nostrum consequuntur. Omnis quis aut ipsum quo. Facilis velit ducimus quisquam consequatur vitae quidem.  ▶"
    "published_at" => "2003-10-06"
    "category_id" => 7
    "created_at" => "2021-12-07 20:30:15"
    "updated_at" => "2021-12-07 20:30:15"
  ]
  #original: array:8 [▶]
  #changes: []
  #casts: []
  #classCastCache: []
  #dates: []
  #dateFormat: null
  #appends: []
  #dispatchesEvents: []
  #observables: []
  #relations: []
  #touches: []
  +timestamps: true
  #hidden: []
  #visible: []
}

有人能解释一下我在这里遗漏了什么吗?

多谢指点

共有1个答案

袁子瑜
2023-03-14

你希望得到什么结果?

$posts的第一个元素是第一篇文章的对象,您无需再次定义这些属性。你可以用

$post->id

删除所有定义的属性。

 类似资料:
  • 问题内容: 我在这里有一个复杂的json 我正在尝试在我的模型类“ ChromeJsonModel”中映射它,例如: 但是我收到以下错误。 我为什么会在哪里出问题? 问题答案: 您拥有非常复杂的有效负载,其中相同的属性可能具有一个或多个对象。默认情况下不会处理这种情况,因此我们需要为此类属性实现自定义反序列化器。下面我创建了代表您的有效负载的简单模型: 如您所见,它是-es属性。让我们为这些属性实

  • 我需要将源类中的字段值映射到字段属性。我可以使用Mapstruct使用@mapper注释的'expression'参数来完成 有没有其他方法可以不使用“表达式”来进行映射?

  • 在对这个话题进行了大量的测试和研究之后,我无法完全解决我的问题。我正在springboot应用程序中使用modelmapper进行实体/DTO映射。我正在尝试配置modelmapper,将一个集合映射到一个简单的DTO对象。我已经创建了一个自定义转换器,它正在按预期工作: 我现在的问题是将此转换器应用于所有“集合”= 如果我直接在模型映射器中添加转换器,它就是不工作。 你对此有什么提示或解决办法吗

  • 我还在学习ReactJS。我正在挑战自己写一个非常基本的待办事项应用程序(就像一个人一样),我有一个问题,调用onhtml函数。 这里的问题是不能调用,因为它不在render函数的返回调用中 要从map函数内部访问handleClick,我需要做什么?

  • 问题内容: 在学习Angular 2时,我使用了一个可观察的对象通过API来获取一些数据。像这样: 我的帖子模型看起来是这样的: 我面临的问题是地图运算符对Post模型不做任何事情。例如,我尝试为img值设置默认值,但在视图post.img中什么也不显示。我什至用其他模型(Message [])更改了Post [],但行为没有改变。有人可以解释这种行为吗? 问题答案: 当我想在模板中使用计算属性时

  • 问题内容: 我的PostgreSQL数据库(9.2)中有一个表,其中的列类型为JSON。我很难将此列映射到“ JPA2实体”字段类型。 我尝试使用String,但是当我保存实体时,出现一个异常,即它无法将字符转换为JSON。 处理JSON列时使用的正确值类型是什么? 一个简单的解决方法是定义一个文本列。 问题答案: 请参阅PgJDBC错误#265。 PostgreSQL过于严格,对数据类型转换非常