【问题标题】:Eloquent Model not joining tables in the right orderEloquent 模型未按正确顺序连接表
【发布时间】:2018-08-05 19:14:51
【问题描述】:

我正在尝试加入 2 个表(staff 和 hr_validations),然后将结果返回到我的 vuejs 应用程序以显示。
我的雄辩模型:

namespace App\Http\Controllers;

use Illuminate\Http\Request;
use App\hr_validation;

class hrvalidationController extends Controller
{
    public function getStaffLoans()
    {
    	$loan = hr_validation::join('staff','staff.staff_id','=','hr_validations.staff_id_fk')->where('hr_validations.validate',NULL);
    	$date = $loan->pluck('hr_validations.created_at');
    	$name= $loan->pluck('staff.staff_name');
    	return([$loan->pluck('staff_id_fk'), $loan->pluck('loan_amount'), $loan->pluck('loan_tenor'), $loan->pluck('loan_purpose'), $loan->pluck('description'), $date, $loan->pluck('hr_validations.id'), $name]);	
    }

hr_validations 表:

员工表:

问题在于 Eloquent 模型在发送到我的 VueJS 应用程序的结果中填充 staff_name 列的方式。当我在 VueJS 中迭代结果时,它只是按照它出现在人员表中而不是根据 hr_validations 表中的 staff_id_fk 填充它,如下所示:

如何更正员工姓名列,使其显示每个员工代码的正确员工姓名,以便下面的员工姓名列显示 [“Anthony Babatunde”,“John Jackson”,“Anthony Babatunde”] 而不是它在下面显示的内容:

任何帮助将不胜感激。谢谢!

【问题讨论】:

  • Laravel 生成的查询是什么? hr_validation::join('staff','staff.staff_id','=','hr_validations.staff_id_fk')->where('hr_validations.validate',NULL)->toSql();。另外,为什么使用pluck 而不是选择?
  • @craig_h 哈!显然问题是我在加入之前没有使用 select 语句。谢谢你指出我正确的方向。

标签: mysql rest laravel-5 vue.js eloquent


【解决方案1】:

显然,我在 join 操作之前省略了 select 语句。这样做了,我的代码运行良好。

【讨论】:

  • 可以mark the answer as accepted吗?这会向其他用户显示问题已解决。
  • @JonasStaudenmeir 感谢您的提示。干杯!
猜你喜欢
  • 2021-08-08
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-05-19
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多