没有 laravel 的 Eloquent 选择行不起作用
Posted
技术标签:
【中文标题】没有 laravel 的 Eloquent 选择行不起作用【英文标题】:Eloquent without laravel selectRow is not wotking 【发布时间】:2019-12-18 02:24:11 【问题描述】:我在 laravel 之外使用 eloquent。我已经在 compposer.json 中安装了照明/数据库。现在我创建了一个扩展 Illuminate\Database\Eloquent\Model 类的类。 现在我想使用 DB::row(),但出现错误
这是我的代码:
模型.php
namespace Framework;
use Helpers\Helper;
use Illuminate\Database\Capsule\Manager as Capsule;
use Illuminate\Database\Eloquent\Model as BaseModel;
class Model extends BaseModel
public $Error = null;
public $Connection = null;
public $qry_builder = null;
public $version;
public $table_name;
function __construct()
try
parent::__construct();
$capsule = new Capsule;
$capsule->addConnection([
'driver' => DB_DRIVER,
'host' => DB_HOST,
'database' => DB_NAME,
'username' => DB_USER,
'password' => DB_PSSWD,
'charset' => 'utf8'
]);
$capsule->setAsGlobal();
$capsule->bootEloquent();
catch (\Exception $ex)
Helper::log()->log(LogLevel::ERROR, "Unable to connect DB", ["DB_NAME"=> DB_NAME,"HOST"=>DB_HOST,"DB_USER"=>DB_USER,"DB_PASSWORD"=>DB_PSSWD]);
BankMinMaxModel.php
namespace Models;
use \Framework\Model;
use Helpers\Helper;
class BankMinMaxModel extends Model
protected $table = "tbl_pl_bank_min_max_new";
protected $primaryKey = 'id';
// protected $fillable = [];
public $timestamps = false;
protected $guarded = [];
public function get($where)
$data = null;
echo $data = self::orderBy("id", "DESC")->where($where)->selectRow("MIN(NULLIF(min_turnover,0)) as min_turnover")->toSql();
exit;
if($data)
$data = $data->toArray();
return $data;
控制器:
$loanMinMaxValues = (new BankMinMaxModel)->get([["occup_id", "=", 3]]);
错误
"调用未定义的方法 Illuminate\Database\Eloquent\Builder::selectRow()"
【问题讨论】:
你确定你不是指“selectRaw”而不是“selectRow”吗? (一个错字) 【参考方案1】:selectRow()
在 Laravel 中不存在。应该是selectRaw()
。
查看 Laravel 文档中的原始表达式。
https://laravel.com/docs/5.8/queries#raw-expressions
DB::raw()
你可以像->select(\DB::raw('column_one, column_tow'))
这样使用它
【讨论】:
感谢您的建议。我也可以使用 DB::raw 吗?请建议相同的代码 因为你可以以上是关于没有 laravel 的 Eloquent 选择行不起作用的主要内容,如果未能解决你的问题,请参考以下文章
Laravel Eloquent 在 whereHas() 上进行选择
Laravel 中自动删除相关行(Eloquent ORM)