如何在一个功能控制器中调用两个模型函数? 我是Laravel世界的新手,我试图创建一个Search按钮,我在Model.php中有这两个函数:
public static function Peticion(){
return DB::table('usados')
->join('marcas', 'marcas.id', '=', 'usados.marca_id')
->select('usados.*', 'marcas.nombre')
->orderBy('created_at', 'desc')
->paginate(4);
}
public function scopeSearch($query,$buscar){
return $query->where('modelo', 'LIKE', "%$buscar%");
}
这是我的controller.php:
public function usados(Request $request) {
$usado = Usados::Peticion();
Usados::Search($request->buscar)->paginate(12);
return view('usados', compact('usado'));
}
我的数据库结构:
两者都很完美但是当一个人工作时另一个人没有工作,而且我不知道如何让他们在同一个控制器中一起工作?
我有功能" Peticion"从DB列出一些信息,另一个是搜索按钮..
答案 0 :(得分:0)
假设您的模型名称是model1
然后像这样从控制器中调用它
$obj=new model1();
$usado=$obj->Peticion();
<强>被修改强>
在名为 TestController
的控制器中<?php
namespace App\Http\Controllers;
use Illuminate\Http\Request;
use App\Http\Requests;
use App\TestModel;
class TestController extends Controller
{
//
public function usados(){
$obj=new TestModel();
$usado=$obj->Peticion();
var_dump($usado);
$datavar='s';
echo "search demo here";
$search=$obj->scopeSearch($datavar);
var_dump($search);
}
}
在名为 TestModel
的模型中<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class TestModel extends Model
{
//
public static function Peticion(){
return \DB::table("customers")->select("customers.*")->where("id","<=",11)->get();
}
public function scopeSearch($buscar){
return \DB::table("customers")->select("customers.*")->where('first_name', 'LIKE', "%$buscar%")->get();
}
}
vardump之后
<强>说明:强> 我只是使用了c ++对象概念。 假设你的路线是
Route::post('/demo','TestController@usados');
所以它将进入TestController的usados功能
$obj=new TestModel();
这一行将创建一个 TestModel 的对象,称为$ obj n在内存中取地址; $ usado = $ obj-&GT; Peticion();
这里Peticion();是函数。$ obj-&gt; Peticion();通过这一行你称之为 TestModel 类的函数Peticion。 然后它将转到类 TestModel 函数,称为Peticion,它将返回你的查询.n回到控制器$ usado = $ obj-&gt; Peticion(); $ usado将查询数据。 var_dump($ usado)之后;你可以看到你的数据。 类似$ search = $ obj-&gt; scopeSearch($ datavar); 然后你可以把它发送到你的视图
return view('viewname',compact('usado','search');
希望你明白。
答案 1 :(得分:0)
当你在模型中声明范围时,静态方法调用的名称从小写开始,如下所示:
Usados::search($request->buscar)->paginate(12);
答案 2 :(得分:0)
两者都应该有效,您必须尝试将数据发送到您的视图:
public function usados(Request $request) {
$usado = Usados::Peticion();
$search = Usados::search($request->buscar)->paginate(12);//note s in lower case in search
return view('usados', compact('usado','search'));
}
您应该记录并调试:
使用: \ Log :: info(print_r($ usado,true)); //记录数组