我有一个Laravel模型和一个函数。需要时,如何将函数附加到模型结果?我不想使用$appends
,因为我不需要始终使用该功能。
这是我的模特
class Vendor extends model
{
public function status()
{
if ($this->active == 1) return 'active';
else return 'deActive';
}
}
这是我的控制器,我想要这样的代码:
class VendorController extends Controller
{
public function info()
{
$vendor = Vendor::all();
$vendor->load('status');
return $vendor;
}
public function infoWithoutStatus()
{
$vendor = Vendor::all();
return $vendor;
}
}
答案 0 :(得分:2)
没有任何办法;因为当您在模型中声明函数时,该函数可与该对象一起使用;并在调用函数或附加函数时加载函数结果;为此,您应该编写一个foreach来加载每个对象的值
答案 1 :(得分:0)
class Vendor extends model
{
public function getStatusAttribute()
{
if ($this->active == 1) {
return 'active';
}
return 'deActive';
}
}
答案 2 :(得分:0)
您可以使用追加,但不要将其放在可见集中。
class Vendor extends model
{
protected $appends = ['status'];
protected $visible = [];
public function getStatusAttribute()
{
return $this->active ? 'active' : 'deActive';
}
}
,然后在控制器中像这样使用它:
$vendors = Vendor::all();
// without status field
return $vendors;
// with status field
return $vendors->makeVisible('status');