未定义的方法Illuminate \ Database \ Query \ Builder :: setPath()

时间:2018-07-03 05:59:52

标签: laravel model eloquent carousel

我正试图将我的表称为“轮播”。但这是一个错误。 我已经为模型创建了。我正在使用php myadmin。

错误消息:

  

未定义的方法Illuminate \ Database \ Query \ Builder :: setPath()

轮播模型

<?php
namespace App;
use Illuminate\Database\Eloquent\Model;
class Carousel extends Model
{ 

}

控制器

function getsearchCarousel(Request $req){

    if($req->has('searchcar')){
        $data = Carousel::where('carouselName','like',$req->input('searchcar').'%')->select('id','carouselName, carouselPhoto');
        $data->setPath($req->url()."?searchcarousel=".$req->searchcar);
        return view('Admin.Page.Carousel.carousel')->with('data', $data);
    }
    else{
        return redirect('/Admin/Page/carousel');
    }
}

2 个答案:

答案 0 :(得分:1)

您缺少->get()部分

$data = Carousel::where('carouselName','like',$req->input('searchcar').'%')->select('id','carouselName, carouselPhoto')->get();

因此,假设您的模型中定义了setPath函数,那么现在您将找到它,因为实际上您正在尝试从queryBuilder中获取它。

答案 1 :(得分:0)

在您的代码中,您不会在db中获取数据。为了在db中获取数据,必须在代码->get()->first()方法之后使用。

$carusels = Carousel::where('carouselName','like',$req->input('searchcar').'%')
    ->select('id','carouselName, carouselPhoto')
    ->get();

这种情况carusels\Illuminate\Database\Eloquent\Collection的实例,您必须使用forecah来获得单独的$ carusel

foreach($carusels as $data) {
    $data->setPath($req->url()."?searchcarousel=".$req->searchcar);       
}

并在您的Courusel模型中定义setPath方法。

您还可以使用->first

获得单个数据
$carusels = Carousel::where('carouselName','like',$req->input('searchcar').'%')
    ->select('id','carouselName, carouselPhoto')
    ->first();
$data->setPath($req->url()."?searchcarousel=".$req->searchcar);