Laravel 5.4显示属于用户的结果



下午好。

我试图显示分配给用户的结果,其逻辑是,在管理中,用户只看到分配的内容。

我的模型如下所示,在scopeName函数中,我试图将管理员和提案表的数据传递给控制器:

<?php
namespace App;
use IlluminateDatabaseEloquentModel;
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('AppUser');
}
public function userid()
{
return $this->belongsTo(User::class, 'user_id');
}
public function admins()
{
return $this->belongsTo('AppAdmin');
}
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%");
}
}

我的控制器:

/**
* Show the application dashboard.
*
* @return IlluminateHttpResponse
*/
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);
}

它抛出的视图中的错误如下:

(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)

检查admins表中是否有last_name字段。如果没有,则

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%");
}

最新更新