为了账号安全,请及时绑定邮箱和手机立即绑定

在 Laravel 搜索中显示来自多个不同表的数据

在 Laravel 搜索中显示来自多个不同表的数据

PHP
HUH函数 2022-10-14 16:01:47
我一直在为我的库应用程序开发搜索功能,这是我的第一个 Laravel 项目,所以我有点挣扎。我终于找到了搜索功能,我可以在其中按书名搜索一本书,但是,我无法显示搜索中不在该表中的任何数据。如果我运行搜索,我会收到以下错误消息:Facade\Ignition\Exceptions\ViewExceptionUndefined property: stdClass::$authors (View: /Users/krisz/code/project/resources/views/books/index.blade.php)我在“书籍”和“作者”之间创建了一个数据透视表,如果我只想在我的索引页面上显示数据而不进行搜索,它可以工作,但搜索后我无法让它工作。此外,如果我从“books”表之外的 index.blade.php 中删除所有数据,则搜索工作正常。你能帮我解决这个问题吗?图书控制器:<?phpnamespace App\Http\Controllers;use Illuminate\Http\Request;use App\Book;use App\Language;use App\Genre;use App\Author;use App\Publisher;use App\User;use Illuminate\Support\Facades\DB;class BookController extends Controller{     public function index(Request $request)    {        $books = Book::with('language')->get();        $books = Book::with('user')->get();        $languages = Language::all();        $genres = Genre::all();        $publishers = Publisher::all();        $users = User::all();        $authors = Author::all();        return view('books/index', compact('books','languages','genres','publishers','users'));    }    public function search(Request $request)    {        $authors = Author::all();        $books = Book::with('language')->get();        $books = Book::with('user')->get();        $languages = Language::all();        $genres = Genre::all();        $publishers = Publisher::all();        $users = User::all();        $search = $request->get('search');        $books = DB::table('books')            ->where('title','like','%' .$search. '%')            ->paginate(5);        return view('books/index')             ->with(compact('books','languages','genres','authors','publishers','users'));    }}
查看完整描述

1 回答

?
青春有我

TA贡献1784条经验 获得超8个赞

首先,您只是在这里覆盖自己:

$books = Book::with('language')->get();
$books = Book::with('user')->get();

我怀疑你想要两个languageand user,你可能想要authors, 以及你试图在视图中获取的其他一些数据?这称为急切加载,它在多个关系上完成,如下所示:

$books = Book::with(['language', 'user', 'authors', 'publishers', 'genres'])->get();

不确定您遇到的错误,$book应该是App\Bookand not的一个实例,stdClass即使没有急切加载,关系也应该仍然可用。我怀疑您没有显示某些代码,或者您的模型定义不正确。


查看完整回答
反对 回复 2022-10-14
  • 1 回答
  • 0 关注
  • 98 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信