【问题标题】:Laravel - Object of class Illuminate\Database\Eloquent\Builder could not be converted to stringLaravel - 类 Illuminate\Database\Eloquent\Builder 的对象无法转换为字符串
【发布时间】:2020-12-01 20:06:33
【问题描述】:

我的问题末尾有代码。这是我的问题。我无法弄清楚为什么我的输入变量在模型中不起作用。它返回“类 Illuminate\Database\Eloquent\Builder 的对象无法转换为字符串”并指向查询中的“f.object_status_code = '$s_status'”行。

奇怪的是,我在模型中犯了一个错误,在某一时刻输入了一些额外的随机参数...

public function scopegetFeeList($mistake, $s_status){

... 即使第一个参数不应该存在,这也会返回结果。我不知道为什么会这样。但是带有 $s_status 单个参数的正确版本给了我“无法转换为字符串错误”。

我试图了解如何使用原始数据库查询成功地将参数传递给模型。 (我使用原始查询的原因是查询比这里表示的要复杂得多。出于说明目的,我对其进行了简化。)

我也尝试过这种表示法:where f.object_status_code = '."$s_status."' 得到相同的错误消息。

任何帮助将不胜感激。

现在我的代码:

路线:

Route::get('/srfees', 'SRFeesRepController@srfeelist')->name('srfeesrep');

控制器:

<?php

namespace App\Http\Controllers\Apps;

use App\Http\Controllers\Base\HomeController;
use Illuminate\Http\Request;
use App\Http\Models\Apps\SRfeesRepModel;

class SRFeesRepController extends HomeController
{

    public function srfeelist(Request $request)
    {
       
        $s_status = $request->input('s_status','Inactive'); 

        $fee_list = SRfeesRepModel::getFeeList($s_status);
        $base_data = $this->get_base_data();

        return view('pages.apps.srfeesrep')
         ->with('base_data', $base_data)
         ->with('fee_list', $fee_list);       
    }

}

型号:

<?php
namespace App\Http\Models\Apps;
use Illuminate\Database\Eloquent\Model;
use DB;

class SRfeesRepModel extends Model
{
    public function scopegetFeeList($s_status){


        $results = DB::connection('MyDB')
        ->select(DB::raw("

                SELECT 
                f.code as 'code'
                ,f.printcode as 'printcode'
                ,f.object_status_codeas 'status'
                
                  FROM fee f 
                   where f.object_status_code = '$s_status'
                                  
                    ") ) ;
          
         return $results;
         
    }
}

【问题讨论】:

  • 这不是作用域,它应该只是模型上的常规方法

标签: laravel input model parameter-passing


【解决方案1】:

用这个替换你的范围方法

public function scopegetFeeList($query,$mistake, $s_status){
}

【讨论】:

    猜你喜欢
    • 2016-05-13
    • 2019-11-29
    • 2022-01-24
    • 2020-05-13
    • 2017-03-15
    • 2016-01-01
    • 2018-06-16
    • 2019-06-27
    • 2019-01-10
    相关资源
    最近更新 更多