【问题标题】:Pushing an extra field into an array in Laravel/PHP在 Laravel/PHP 中将额外字段推送到数组中
【发布时间】:2018-08-14 21:19:20
【问题描述】:

我正在返回项目团队成员的详细信息。

涉及的表格有:

 users
 projects 
 members

(为简洁起见,它们看起来像这样)

'users'
    ('id',
    'name',
    'email',
    'avatar',
    'avatar_type',
    'status')

'projects'
    ('id',
    'name',
    'description')

'members'
    ('id',
    'user_id',
    'position',
    'capacity')

项目可以有多个成员,成员表实际上是用户的数据透视表。

目前正在使用这个:

$projectTeam = [];
$project[0]->members()
    ->with('users')
    ->where('user_id','!=',0)
    ->where('status','=',"Active")
    ->get()
    ->each(function ($member) use(&$projectTeam)
    {
        $projectTeam[$member->id] = $member->users;
    });

我想在上面的循环中做的是评估用户记录,然后如果填充了头像字段并且头像类型是某个值,则在结果中创建/推送/附加另一个字段,以便我可以添加在额外的信息中。

类似这样的:

$projectTeam = [];
$project[0]->members()
    ->with('users')
    ->where('status','=',"Active")
    ->get()
    ->each(function ($member) use(&$projectTeam)
    {
        $projectTeam[$member->id] = $member->users;

            if($member->users->avatar<>"")
            {
                if($member->users->avatar-type=="1")
                {
                    array_push($projectTeam[$member->id], "imgClass='alpha'")
                }
                if($member->users->avatar-type=="2")
                {
                    array_push($projectTeam[$member->id], "imgClass='beta'")
                }
            }
    });

这样当我在前端调用这些图像记录时,我就可以使用该新字段填充 html 类。

类似这样的:

<img src="{{$teammember->avatar}}" class="{{$teammember->imgClass" /> 

希望这是有道理的!

我该如何添加那个额外的字段?

【问题讨论】:

    标签: php arrays laravel


    【解决方案1】:

    现在是真实雄辩的答案...

    你想做的就是做

    class ProjectTeam
    {
        protected $appends = ['imageClass'];
    
        public function getImageClassAttribute()
        {
            return 'whatever';
        }
    }
    

    现在,无论何时拨打$projectTeam-&gt;imageClass,您都会收到whatever

    【讨论】:

    • 看起来不错!那么在函数 getImageClassAttribute 中,我会评估 $member->users->avatar 字段并返回适当的类吗?
    • 是的,但你可能更适合建立适当的 Eloquent 关系...laravel.com/docs/5.6/eloquent-relationships
    【解决方案2】:

    怎么样:

    $projectTeam[$member->id]->imgClass = 'alpha'
    

    【讨论】:

    • 谢谢,我收到一个错误“从空值创建默认对象”
    • 也许我需要以某种方式声明那个新字段?
    • 啊,我的错,我把东西搬过来了——现在都整理好了,谢谢。
    猜你喜欢
    • 2022-11-30
    • 2017-03-21
    • 2015-05-08
    • 1970-01-01
    • 2021-08-16
    • 2015-02-09
    • 2018-09-23
    • 1970-01-01
    • 2015-05-17
    相关资源
    最近更新 更多