【问题标题】:How can I use math function in laravel eloquent query?如何在 laravel eloquent 查询中使用数学函数?
【发布时间】:2021-08-05 20:25:07
【问题描述】:

我想在我的 eloquent 查询中进行总和数学计算。我有一个变量,它必须是我的一些数据库文件的倍数,如果超过 3000,那么父项必须在我的结果中。

1)珠宝模型:

class Jewel extends Model
{
use HasFactory;

public function jewelsItems(){
    return $this->hasMany('App\Models\JewelsItem');
}

 }

2)JewelsItem 模型:

class JewelsItem extends Model
{

//has weight,fee field

use HasFactory;


protected $table = 'jewel_items';

public function jewel(){
    return $this->belongsTo('App\Models\Jewel');
}

}

查询必须让我得到所有至少有一个有 (weight*($varibale+fee)) > 5000 的 JewelsItem 的珠宝。

注意1: $varibale 不是数据库字段。

note2:我不想使用原始表达式,因为他们的漏洞。

【问题讨论】:

  • 很确定你必须为此使用DB::raw,不确定你的意思是什么漏洞,因为 laravel 为你逃脱了一切。
  • 好的,我怎样才能以这种方式防止 SQL 注入?@thursday_dan
  • 这就是我说的laravel会自动完成,你不需要采取任何额外的步骤。

标签: laravel eloquent laravel-query-builder


【解决方案1】:

你可能想试试这个:

return Jewel::whereHas('jewelsItems', function ($query) use ($variable) {
    $query->whereRaw("(weight*({$varibale}+fee)) > 5000");
})->get();

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2015-12-28
    • 1970-01-01
    • 1970-01-01
    • 2017-03-09
    • 1970-01-01
    • 2021-08-27
    • 2019-12-20
    相关资源
    最近更新 更多