Laravel中的所有其他属性均请求

时间:2018-06-21 22:02:40

标签: laravel oop model-view-controller eloquent

美好的一天。 例如,我有一个模型People,其中包含字段/属性:

name
surname

并且模型也具有此方法:

public function FullName()
{
    return "{$this->name} {$this->surname}";
}

如果我下一个请求:

$p = $people->all();

我将使用名称和姓氏作为属性进行收集 如何在all()请求中为每个函数执行函数?

什么是最佳做法?

3 个答案:

答案 0 :(得分:1)

我使用以下内容:

class MyView : View() {
    val cities = FXCollections.observableArrayList("Dallas", "New York", "Sacramento")
    val selectedCity = SimpleStringProperty()

    override val root = form {
        fieldset {
            field("City") {
                combobox(selectedCity, cities)
            }
        }
    }

    init {
        selectedCity.onChange {
            println("City changed to: $it")
        }
    }
}

然后,我将其添加到附录中:

public function getFullNameAttribute()
{
    return "{$this['name']} {$this['lastname']}";
}

你怎么看?

答案 1 :(得分:1)

在模型中编写一个函数来连接名称

public function getFullNameAttribute() {
        return ucfirst($this->first_name) . ' ' . ucfirst($this->last_name);
    }

现在您可以这样称呼

$user = User::find(1);
echo $user->full_name;

or 
Auth::user()->full_name;

答案 2 :(得分:1)

嗯,取决于您想要什么样的结果。


选项A:在数组的所有项目中都有intnamesurname

以利亚撒的答案是正确的,但有点不完整。

1。在模型中定义新的Accesor。

这将在模型中定义一个新属性,就像full_namename一样。定义新属性后,您只需执行surname即可获取该属性。

正如documentation所说,要定义访问者,您需要添加一个方法:

$user->full_name

2。将属性附加到模型上

这将使该属性与其他任何属性一样被考虑,因此,每当调用表的记录时,都会将该属性添加到记录中。

要完成此操作,您需要在模型的受保护的// The function name will need to start with `get`and ends with `Attribute` // with the attribute field in-between in camel case. public function getFullNameAttribute() // notice that the attribute name is in CamelCase. { return $this->name . ' ' . $this->surname; } 配置属性中添加此新值,如documentation所示:

$appends

3。确保此属性为use Illuminate\Database\Eloquent\Model; class User extends Model { /** * The accessors to append to the model's array form. * * @var array */ // notice that here the attribute name is in snake_case protected $appends = ['full_name']; }

请注意docs的这一重要部分:

  

将属性添加到附加列表后,它将是   包含在模型的数组和JSON表示中。   appends数组中的属性也将遵守visible和   在模型上配置的visible设置。

4。查询数据。

执行以下操作时:

hidden

$p = $people->all(); 数组应具有$pname以及每个项目的新surname属性。


选项B:仅出于特定目的获取全名。

查询时可以执行以下操作,迭代每个结果以获得属性。

现在,您可以使用full_name语句对集合进行迭代,但是鉴于每次查询数据时,返回的数组始终是Collection实例,因此您只需使用{{1} }函数:

foreach