Laravel 如何安全访问其他用户和其他型号';s叶片模板内的记录

Laravel 如何安全访问其他用户和其他型号';s叶片模板内的记录,laravel,laravel-5.2,laravel-blade,Laravel,Laravel 5.2,Laravel Blade,我在我的应用程序用户、销售和计划中有3个模型,当我为每个客户提供销售时(由于存储),我只获取与该销售相关的其他用户和模型的id(如客户经理、所有者、计划),现在我正试着使用刀片中的这些id根据id和模型获取名称或其他行。以下是显示功能: public function show($id) { $user = User::find($id); $sales = Sale::where('customer_id', '=', $id)->get(); return view('profiles

我在我的应用程序用户、销售和计划中有3个模型,当我为每个客户提供销售时(由于存储),我只获取与该销售相关的其他用户和模型的id(如客户经理、所有者、计划),现在我正试着使用刀片中的这些id根据id和模型获取名称或其他行。以下是显示功能:

public function show($id) {
$user = User::find($id);
$sales = Sale::where('customer_id', '=', $id)->get();
return view('profiles.customer', ['user' => $user, 'sales' => $sales]);
}
在blade中,我得到了如下销售:

@foreach ($sales as $sale)
    <li>
        <i class="fa fa-home bg-blue"></i>
        <div class="timeline-item">
            <span class="time"><i class="fa fa-clock-o"></i> {{$sale->created_at->format('g:ia, M jS Y')}}</span>

            <h3 class="timeline-header"><a href="#">{{$user->name}}</a> became a customer</h3>

            <div class="timeline-body">
                <p>Date: {{$sale->sold_date}}</p>
                <p>Price: {{$sale->sale_price}}</p>
            </div>
        </div>
    </li>
@endforeach
我在《刀锋》中是这样使用的:

Account manager: {{$sale->getUser($sale->account_mgr_id)->name}}
这是最安全和最好的方法吗?或者我忽略了什么?

我想你可以用。以您的示例为例,您应该在用户模型中定义关系:

<?php

class User extends Eloquent {
    public function sales() {
         return $this->hasMany(Sale::class, 'customer_id');
    }
}
我想你可以用。以您的示例为例,您应该在用户模型中定义关系:

<?php

class User extends Eloquent {
    public function sales() {
         return $this->hasMany(Sale::class, 'customer_id');
    }
}

您需要在销售模型中添加关系

class Sales extends Eloquent {

    .....
    .....

    public function accountManager() {
         return $this->hasMany('App\User', 'account_manager_id');
    }

    public function agents() {
         return $this->hasMany('App\User', 'agent_id');
    }

    public function owner() {
         return $this->hasOne('App\User', 'owner_id');
    }
}
现在,
$sales->agents
将在
用户
表中为您提供一个具有
代理id
的用户

根据需要更新您的
hasOne
hasmall
关系

从刀片模板中,您可以访问AccountManager作为

@foreach($sales->accountManager as $manager)
  Name: {{ $manager->name}}
@endforeach

您需要在销售模型中添加关系

class Sales extends Eloquent {

    .....
    .....

    public function accountManager() {
         return $this->hasMany('App\User', 'account_manager_id');
    }

    public function agents() {
         return $this->hasMany('App\User', 'agent_id');
    }

    public function owner() {
         return $this->hasOne('App\User', 'owner_id');
    }
}
现在,
$sales->agents
将在
用户
表中为您提供一个具有
代理id
的用户

根据需要更新您的
hasOne
hasmall
关系

从刀片模板中,您可以访问AccountManager作为

@foreach($sales->accountManager as $manager)
  Name: {{ $manager->name}}
@endforeach

雄辩的关系是你的朋友,你可以很容易地解决你的问题


建议从视图中删除所有这些函数访问和控制,并将其放在其他地方。这对你来说是个好习惯,这样你就可以避免臭名昭著的胖子观点,雄辩的关系是你的朋友,你可以很容易地解决你的问题



建议从视图中删除所有这些函数访问和控制,并将其放在其他地方。这对你来说是个好习惯,这样你就可以避免臭名昭著的胖视图

你是如何在销售模式中管理关系的?这可能是个问题,我没有建立关系,因为每个销售模型记录都有5个不同的用户和一个计划模型id,所以不知道如何获取它。您如何管理销售模型中的关系?这可能是个问题,我没有设置关系,因为每个销售模型记录都有5个不同的用户和一个计划模型id,所以不知道如何获取它。这是最接近的,但通过这种方式,它在用户表中搜索account\u manager\u id,它应该根据sales表中的account\u manager\u id搜索id。好的,我刚刚添加了“id”,例如现在它的('App\User'、'id'、'agent\u id');现在就可以了。谢谢你!!!查看文档“return$this->hasMany('App\User'、'foreign\u key'、'local\u key')”。希望你能解决。哈哈,我们同时回答了同样的问题……无论如何,我将hasMany改为hasmone,并在blade中不使用foreach返回它(因为每笔销售只有一个id)@Dino Happy Coding;)这是最接近的,但通过这种方式,它在用户表中搜索account\u manager\u id,它应该根据Sales表中account\u manager\u id搜索id。好的,我刚刚添加了“id”,例如现在它的('App\User','id','agent\u id'));现在就可以了。谢谢你!!!查看文档“return$this->hasMany('App\User'、'foreign_key'、'local_key')”。希望你能解决。哈哈,我们同时回答了同样的问题……无论如何,我把hasMany改成了hasmone,并在blade中不使用foreach返回它(因为每次销售都只有一个id)@Dino Happy Coding;)另一个答案给了我解决方案,但你能详细阐述一下“胖观点”吗?这样我就可以避免它了?基本上你需要记住,在编程世界中,越少越好,如果你能用更少的努力解决问题,但仍然足够负责任,越少越好。Fat视图是指MVC模式中的视图获得了大量的控制结构和功能,很难维护,并且与M和C对应的视图分离。控制结构(如if-else)和函数最好表示为状态。你可以把所有的代码都交给控制器或者更负责的类。其他答案给了我解决方案,但是你能详细阐述一下“胖视图”吗,这样我就可以避免它吗?基本上你需要记住,在编程的世界里,越少越好,如果你能用更少的努力解决问题,但仍然足够负责,越少越好。Fat视图是指MVC模式中的视图获得了大量的控制结构和功能,很难维护,并且与M和C对应的视图分离。控制结构(如if-else)和函数最好表示为状态。您可以将所有代码提交给控制器或更负责的类。
class Sales extends Eloquent {

    .....
    .....

    public function accountManager() {
         return $this->hasMany('App\User', 'account_manager_id');
    }

    public function agents() {
         return $this->hasMany('App\User', 'agent_id');
    }

    public function owner() {
         return $this->hasOne('App\User', 'owner_id');
    }
}
@foreach($sales->accountManager as $manager)
  Name: {{ $manager->name}}
@endforeach