Php 索引页不显示db的对象,有时显示未定义的变量
我试图建立一个购物车,但它没有显示购物车包含什么 控制器和刀片中的代码有问题:Php 索引页不显示db的对象,有时显示未定义的变量,php,laravel,Php,Laravel,我试图建立一个购物车,但它没有显示购物车包含什么 控制器和刀片中的代码有问题: public function index() { $id = Auth::id(); $results = DB::table('carts') ->select('book_id') ->where('user_id', '=', $id)
public function index()
{
$id = Auth::id();
$results = DB::table('carts')
->select('book_id')
->where('user_id', '=', $id)
->get();
$data = (array) $results;
$books = Book::all()->whereIn('id', $data);
return view('carts.index')->withBooks($books);
}
@foreach($books作为$book)
{{$book->autori}
{{$book->titulli}
{{$book->cmimi}
@endforeach
或使用单个查询:
public function index()
{
$books = Book::join('carts', static function($join) {
$join->on('books.id', '=', 'carts.book_id')
->where('carts.user_id', '=', Auth::id());
})->get();
return view('carts.index')->withBooks($books);
}
您应该阅读并使用。btw,而不是使用$data=(array)$results;您还可以执行$data=$results->toArray();对于您的问题,这不是正确的方法:$books=Book::all()->其中('id',$data);而是这样做:$books=Book::其中('id',$data)->get();我认为第一行可以简化为:
DB::table('carts')->where('user_id','=',Auth::id())->pull('book_id')
它将返回一个集合,并且其中
接受集合,所以这很好。但无论如何,使用单个查询可能更好。
public function index()
{
$booksIds = DB::table('carts')
->select('book_id')
->where('user_id','=', Auth::id())
->get()
->pluck('book_id')
->toArray();
$books = Book::whereIn('id', $booksIds)->get();
return view('carts.index')->withBooks($books);
}
public function index()
{
$books = Book::join('carts', static function($join) {
$join->on('books.id', '=', 'carts.book_id')
->where('carts.user_id', '=', Auth::id());
})->get();
return view('carts.index')->withBooks($books);
}