我一直在为我的库应用程序开发搜索功能,这是我的第一个 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();
我怀疑你想要两个language
and user
,你可能想要authors
, 以及你试图在视图中获取的其他一些数据?这称为急切加载,它在多个关系上完成,如下所示:
$books = Book::with(['language', 'user', 'authors', 'publishers', 'genres'])->get();
不确定您遇到的错误,$book
应该是App\Book
and not的一个实例,stdClass
即使没有急切加载,关系也应该仍然可用。我怀疑您没有显示某些代码,或者您的模型定义不正确。
- 1 回答
- 0 关注
- 98 浏览
添加回答
举报
0/150
提交
取消