美好的一天。
例如,我有一个模型People
,其中包含字段/属性:
name
surname
并且模型也具有此方法:
public function FullName()
{
return "{$this->name} {$this->surname}";
}
如果我下一个请求:
$p = $people->all();
我将使用名称和姓氏作为属性进行收集
如何在all()
请求中为每个函数执行函数?
什么是最佳做法?
答案 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)
嗯,取决于您想要什么样的结果。
int
,name
和surname
。以利亚撒的答案是正确的,但有点不完整。
这将在模型中定义一个新属性,就像full_name
或name
一样。定义新属性后,您只需执行surname
即可获取该属性。
正如documentation所说,要定义访问者,您需要添加一个方法:
$user->full_name
这将使该属性与其他任何属性一样被考虑,因此,每当调用表的记录时,都会将该属性添加到记录中。
要完成此操作,您需要在模型的受保护的// 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
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
设置。
执行以下操作时:
hidden
$p = $people->all();
数组应具有$p
,name
以及每个项目的新surname
属性。
查询时可以执行以下操作,迭代每个结果以获得属性。
现在,您可以使用full_name
语句对集合进行迭代,但是鉴于每次查询数据时,返回的数组始终是Collection实例,因此您只需使用{{1} }函数:
foreach