dongluanan7163 2018-07-13 18:49
浏览 23
已采纳

Laravel 5.4显示属于用户的结果

Good afternoon.

I'm trying to show the results that are assigned to a user, the logic is that in the administration the user sees only what is assigned.

I have my model in the following way, where in the scopeName function I try to pass the data of the admins and proposals tables to the controller:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;

class Proposal extends Model
{
    /**
     * The attributes that are mass assignable.
     *
     * @var array
     */
    protected $table = 'proposals';

    protected $fillable = [
        'user_id', 'admin_id', 'prefix', 'order', 'title', 'province_id', 'municipalities', 'address', 'description', 'status', 'comments', 'closing_comments', 'institution_id', 'table_id'
    ];

    public function users()
    {
        return $this->belongsTo('App\User');
    }

    public function userid()
    {
        return $this->belongsTo(User::class, 'user_id');
    }

    public function admins()
    {
        return $this->belongsTo('App\Admin');
    }

    public function adminId()
    {
        return $this->belongsTo(Admin::class, 'admin_id');
    }

    public function scopeName($query, $name)
    {
        $query->join('admins', 'proposals.admin_id', '=', 'admins.id')
              ->select(
                'proposals.*',
                'admins.name as admin_name',
                'admins.last_name as admin_last_name',
                'admins.area as admin_area',
                'admins.job_title as admin_job_title',
                'admins.email as admin_email',
                'admins.phone as admin_phone',
                'admins.movil as admin_movil')
              ->where('proposals.order','like',"%$name%")
              ->orWhere('proposals.title','like',"%$name%");
    }
}

My controller:

/**
 * Show the application dashboard.
 *
 * @return \Illuminate\Http\Response
 */
public function index(Request $request)
{
  $data = Proposal::name($request->get('criteria'))->where('admin_id','=',Auth::id())->orderBy('id','asc')->paginate(5);

  return view('administracion.propuestas.inicio', compact('data'))->with('i', ($request->input('page', 1) - 1) * 5);
}

The error in the view it throws is the following:

(2/2) QueryException

SQLSTATE[42S22]: Column not found: 1054 Unknown column 'admins.last_name' in 'field list' (SQL: select `proposals`.*, `admins`.`name` as `admin_name`, `admins`.`last_name` as `admin_last_name`, `admins`.`area` as `admin_area`, `admins`.`job_title` as `admin_job_title`, `admins`.`email` as `admin_email`, `admins`.`phone` as `admin_phone`, `admins`.`movil` as `admin_movil` from `proposals` inner join `admins` on `proposals`.`admin_id` = `admins`.`id` where (`proposals`.`order` like %% or `proposals`.`title` like %%) and `admin_id` = 1 order by `id` asc limit 5 offset 0)
  • 写回答

1条回答 默认 最新

  • doubeng1278 2018-07-13 20:40
    关注

    Check in the admins table whether you have a last_name field. If not, then

    public function scopeName($query, $name)
        {
            $query->join('admins', 'proposals.admin_id', '=', 'admins.id')
                  ->select(
                    'proposals.*',
                    'admins.name as admin_name',
                    'admins.area as admin_area',
                    'admins.job_title as admin_job_title',
                    'admins.email as admin_email',
                    'admins.phone as admin_phone',
                    'admins.movil as admin_movil')
                  ->where('proposals.order','like',"%$name%")
                  ->orWhere('proposals.title','like',"%$name%");
        }
    
    本回答被题主选为最佳回答 , 对您是否有帮助呢?
    评论

报告相同问题?

悬赏问题

  • ¥15 目标检测项目无法读取视频
  • ¥15 GEO datasets中基因芯片数据仅仅提供了normalized signal如何进行差异分析
  • ¥15 小红薯封设备能解决的来
  • ¥100 求采集电商背景音乐的方法
  • ¥15 数学建模竞赛求指导帮助
  • ¥15 STM32控制MAX7219问题求解答
  • ¥20 在本地部署CHATRWKV时遇到了AttributeError: 'str' object has no attribute 'requires_grad'
  • ¥15 vue+element项目中多tag时,切换Tab时iframe套第三方html页面需要实现不刷新
  • ¥50 深度强化学习解决能源调度问题
  • ¥15 一道计算机组成原理问题