如何解决如何在Laravel 7导出中获取变量值?
我正在尝试在“状态”列中获取$ status值,因此如何使用以下代码获取此值
public function collection() {
if(Auth::user()->is_accepted == 1) {
$status = 'Accepted';
} elseif (Auth::user()->is_accepted == NULL) {
$status = 'Waiting Confirmation';
} else {
$status = 'Rejected';
}
return Entrepreneur::select('name','contact','address','business_name','business_contact','business_address','is_accepted')->get();
}
public function headings(): array {
return [
'Name','Contact','Address','Business Name','Business Contact','Business address','Status'
];
}
解决方法
使用map()
函数引用链接https://laravel.com/docs/7.x/collections#method-map
通过这种方式,您可以将新密钥添加到任何集合中
public function collection()
{
$entrepreneur = Entrepreneur::select('name','contact','address','business_name','business_contact','business_address')->get();
$entrepreneur->map(function ($row) {
if ($row['is_accepted'] == 1) {
$status = 'Accepted';
} elseif ($row['is_accepted'] == NULL) {
$status = 'Waiting Confirmation';
} else {
$status = 'Rejected';
}
return $status;
});
return $entrepreneur;
}
,
u可以尝试使用Eloquent Mutators,参见:https://laravel.com/docs/7.x/eloquent-mutators#defining-an-accessor
use Illuminate\Database\Eloquent\Model;
class Enterpreneur extends Model
{
protected $table = 'your_table';
protected $appends = ['status']; //edit forgot to add this one
//assumed all column except primary fillable
protected $fillable ['name','business_address','is_accepted'];
public function getStatusAttribute()
{
if($this->is_accepted == 1) {
return 'Accepted';
} elseif ($this->is_accepted == NULL) {
return 'Waiting Confirmation';
} else {
return 'Rejected';
}
}
}
然后Enterpreneur::select('columns')->get(); //modified 'status will be added'
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。