Laravel或者哪个或不同的模型(Laravel orWhere or different Model)

编程入门 行业动态 更新时间:2024-10-25 22:28:40
Laravel或者哪个或不同的模型(Laravel orWhere or different Model)

我试图进行一个查询,过滤一个表上的2列或另一个表上的2列。 这是我到目前为止:

// In my controller return $registry = Registry::search($first_name, $last_name)->get(); // In my model public function user() { return $this->belongsTo('User'); } public function scopeSearch($query, $first_name, $last_name) { $search = $query->where('coregistrant_first_name', 'LIKE', "%$first_name%") ->where('coregistrant_last_name', 'LIKE', "%$last_name%") ->orWhere(function($query) use ($first_name, $last_name) { $query->$this->user()->where('first_name', 'LIKE', "%$first_name%"); }); return $search; }

我尝试了很多不同的东西,现在我停留在$query->$this->user()行,出现此错误:

Undefined property: Illuminate\Database\Query\Builder::$[]

有谁知道如何解决这个问题?

I am trying to do a query that filters on 2 columns on one table OR 2 columns on another. This is what I have so far:

// In my controller return $registry = Registry::search($first_name, $last_name)->get(); // In my model public function user() { return $this->belongsTo('User'); } public function scopeSearch($query, $first_name, $last_name) { $search = $query->where('coregistrant_first_name', 'LIKE', "%$first_name%") ->where('coregistrant_last_name', 'LIKE', "%$last_name%") ->orWhere(function($query) use ($first_name, $last_name) { $query->$this->user()->where('first_name', 'LIKE', "%$first_name%"); }); return $search; }

I have tried a lot of different things and now I'm stuck on the $query->$this->user() line with this error:

Undefined property: Illuminate\Database\Query\Builder::$[]

Anyone know how I can fix this problem?

最满意答案

@Keith,在Laravel中,您无法使用关系动态选择数据。

据我所知,Laravel支持以下规则来使用关系检索数据:

$registers = Registry::with('user')->get();

$registers = Registry::where('xyz', '1')->get();

//然后你可以根据需要加载关系

$registers->load('user');

在你的模型中

public function user() { return $this->belongsTo('User')->where('first_name', 'LIKE', "%xyz%"); }

然后从您的控制器:

$registers = Registry::with('user')->get(); 如果你有一对多的关系,

说你有licenses关系

//您可以指定运算符和计数:

$registers = Registry::has('licenses', '>=', 3)->get();

参考: http : //laravel.com/docs/eloquent#querying-relations

I ended up using query builder to do it.

更多推荐

本文发布于:2023-07-26 17:48:00,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1278913.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:模型   Laravel   Model   orWhere

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!