将一个变量从Eloquent传递给Controller

时间:2018-01-24 08:38:29

标签: laravel laravel-5 eloquent laravel-5.5

是否可以将一个变量从Eloquent传递给Controller? 我在这里有我的Eloquent代码,我得到了我的过滤查询的结果,我想使用相同的变量到我的控制器,以便我可以使用它我的导出到excel。 这是我的雄辩模型的代码:

$result = $query
        ->orderBy('id', 'desc')
            ->paginate($perPage);

        if ($search) {
            $result->appends(['search' => $search]);
        }
        if ($emp_status) {
            $result->appends(['emp_status' => $emp_status]);
        }  
        if ($company) {
            $result->appends(['company' => $company]);
        }
        if ($age) {
            $result->appends(['age' => $age]);
        }
        if ($tenure) {
            $result->appends(['tenure' => $tenure]);
        }
        if ($benefit) {
            $result->appends(['benefit' => $benefit]);
        } 
        if ($level) {
            $result->appends(['level' => $level]);
        } 
        if ($gender) {
            $result->appends(['gender' => $gender]);
        } 
        if ($civil_status) {
            $result->appends(['civil_status' => $civil_status]);
        } 
        if ($birthmonth) {
            $result->appends(['birthmonth' => $birthmonth]);
        } 

        return $result;

我怎样才能获得" $ result"并在UsersController中使用它?

3 个答案:

答案 0 :(得分:1)

听起来你需要在模型中使用像query scope这样的东西

在你的模型中是这样的:

public function scopeWhatever($query)
{
    return $query->
        ...
        your conditions
        ...
}

然后在您的控制器中使用:

YourModel::whatever()->get();

答案 1 :(得分:1)

我建议您将该功能添加到控制器,并在那里调用它。但如果出于某种原因,你需要在Eloquent课程中,我可以建议这两个中的一个:

  • 创建模型的新实例而不保存它,并使用它调用方法。

myInstanceOfTheModel->myFunction();

这适用于该模型的任何实例。

trait QueryFunction(){ theQuery(){ //your function comes here } } class SomeController extends Controller{ use QueryFunction; } class YourModel extends Elloquent{ use QueryFunction; }

  • 更好的解决方案(在我看来),是使用特征。用该函数编写特征并将其添加到模型和控制器中。

`

{{1}}

`

答案 2 :(得分:0)

试试这个: -

Model::query()->where($yourConditions)->get();