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

获取具有所有属性的Laravel模型

林星华
2023-03-14

有没有一种方法可以在Laravel中检索具有所有属性的模型,即使这些属性为空?它似乎只返回属性不为null的模型。

原因是我有一个函数,如果模型中存在属性,它将从数组中更新模型属性。在设置模型之前,我使用property_exists()函数检查模型是否具有特定属性。数组键和模型属性应该匹配,所以它就是这样工作的。

如果模型已经设置了属性,它可以正常工作,因为属性存在并从数组中获取值。但是,如果属性以前为null,则不会更新或设置任何内容,因为它无法通过property_exists()检查。

最终发生的是,我有一个单一的属性数组,然后可能有两个模型。我运行setterhtml" target="_blank">函数,传入attributes数组,并在单独的调用中传递每个对象。如果模型具有匹配的属性,则会对其进行更新。

共有3个答案

乜飞航
2023-03-14

更新:

如果您在这样实例化后试图这样做:

$model = new Model;

那么请对托马斯·金的回答持不同意见。

否则:您可以在模型实例上使用toArray()getArributes()方法,该方法将返回包括空值在内的所有属性。然后您可以使用array\u key\u exists进行检查。

像这样:

if (array_key_exists('foo', $model->getAttributes())) {
    $model->foo = 'new value';
}
东方灵均
2023-03-14
$model->getAttributes();

上面将返回一个原始属性数组(存储在数据库表中)

$model->toArray() 

上面将返回模型的所有原始、变异(如果使用)和附加属性

希望会有帮助!!

冯俊英
2023-03-14

这里有两种方法可以做到这一点。一种方法是在模型中定义默认属性值。

protected $attributes = ['column1' => null, 'column2' => 2];

然后,您可以使用getAtinites()方法来获取模型的属性。

如果你不想设置默认属性,我写了一个快速的方法。

public function getAllAttributes()
{
    $columns = $this->getFillable();
    // Another option is to get all columns for the table like so:
    // $columns = \Schema::getColumnListing($this->table);
    // but it's safer to just get the fillable fields

    $attributes = $this->getAttributes();

    foreach ($columns as $column)
    {
        if (!array_key_exists($column, $attributes))
        {
            $attributes[$column] = null;
        }
    }
    return $attributes;
}

基本上,如果该属性尚未设置,这将向该属性附加一个空值,并将其作为数组返回给您。

 类似资料:
  • 我对用户和资源有很多关系。 用户: 资源: 中间表是。与: 我获取资源用户表中用户id所在的所有资源。到现在为止,一直都还不错。但是,即使中间表中不存在用户id,如何获取所有资源条目呢?假设我在资源表中有3个资源。Id 1、2和3。我有一个ID为1的用户。在中间表中,我只有两行: resource_id1和user_id1和值50。 resource_id2和user_id1和值100。 但是我想

  • 我在一个有这种结构的拉威尔项目中工作 用户:id | first | u name |。。。 角色:id|name 分配的角色:id |用户id |角色id 我认为这是很明显的:p 用户模型 角色模型 我正在寻找一种方法来获取所有具有指定角色(在本例中为“教师”)的用户。我试过这个: 但这总是返回一个包含所有用户的数组。 有人知道为什么会这样吗?谢谢

  • 问题内容: 如何在此页面上获取此“ h2”标题的所有“ href”属性? 我尝试过的没有得到href的是: 这没有获得“ a”标签的链接。如果我在“ a”标签上找到了所有元素,它将返回页面上的每个href(这不是我想要的)。我只想返回上述标题,但能够获取其url“ href”属性。 问题答案: 这是从所有页面获取所有书籍的代码:

  • 我想通过客户端注释获得HttpClient,因此由Micronaut管理。但是,这样我就不能使用属性文件中的url: 是否允许Micronaut管理HttpClient,同时仍然使用来自我的application.yml的url?

  • 问题内容: 我试图遍历一个元素并获取该元素的所有属性以输出它们,例如,一个标签可能具有3个或更多属性,我不知道,我需要获取这些属性的名称和值。我在考虑以下方面: 谁能告诉我这是否可能,如果可以,正确的语法是什么? 问题答案: 该属性包含它们全部: 您还可以做的是扩展,以便可以像获取所有属性的普通对象一样调用它: 用法:

  • 本文向大家介绍获取input标签的所有属性的方法,包括了获取input标签的所有属性的方法的使用技巧和注意事项,需要的朋友参考一下 1.用jquery $("input[name='btnAdd']").attr("value")   获取value属性值,其它属性换attr的参数就OK 2.通过点来获取: 以上就是小编为大家带来的获取input标签的所有属性的方法全部内容了,希望大家多多支持呐喊