gpt4 book ai didi

laravel - 在 Laravel 中返​​回相关书籍

转载 作者:行者123 更新时间:2023-12-02 02:41:47 25 4
gpt4 key购买 nike

我想退回与使用作者姓名的图书相关的图书

我的 Controller 里有这个功能

public function show(Book $book) {

$book = Book::where('id', '=', $book)->first();
$related = Book::whereHas('author_id', function ($q) use ($book) {
return $q->whereIn('name', $post->author->pluck('id'));
})
->where('id', '!=', $book->id) // So I won't fetch same post
->get();
return view('book')
->with($book)
->with($related);
}

这是我的书 table 的样子

public function up()
{
Schema::create('books', function (Blueprint $table) {
$table->bigIncrements('id');
$table->string('name');
$table->text('about');
$table->string('image');
$table->string('image_url');
$table->string('epub_url');
$table->integer('author_id');
$table->string('publisher');
$table->year('year');
$table->boolean('recommended')->default(0);
$table->timestamps();
});
}

我已经在我的模型中这样做了

public function books()
{
return $this->hasMany(Book::class);
}

Book模型中

public function author()
{
return $this->belongsTo(Author::class);
}

我已经这样做了,但这对我不起作用,因为我不知道我做错了什么。谢谢。

最佳答案

一旦您有了$book,您就可以通过查询author_id 字段轻松加载同一作者的其他书籍。只需确保从查询中排除原始图书,就可以了。

$relatedBooks = Book::where('author_id', $book->author_id)
->where('id', '!=', $book->id)
->get();

作为旁注,您已经在方法参数中传递了 Book 的实例,因此代码的第一行 ($book = Book::where('id', '=', $ book)->first();) 是多余的,你可以简单地使用 $book

关于laravel - 在 Laravel 中返​​回相关书籍,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/59009189/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com