Eloquent 模型未按正确顺序连接表
Posted
技术标签:
【中文标题】Eloquent 模型未按正确顺序连接表【英文标题】:Eloquent Model not joining tables in the right order 【发布时间】: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 语句。谢谢你指出我正确的方向。
【参考方案1】:
显然,我在 join 操作之前省略了 select 语句。这样做了,我的代码运行良好。
【讨论】:
可以mark the answer as accepted吗?这会向其他用户显示问题已解决。 @JonasStaudenmeir 感谢您的提示。干杯!以上是关于Eloquent 模型未按正确顺序连接表的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent:如何从连接表中仅获取某些列
限制从 Laravel Eloquent 中连接的表/模型返回的字段