に属しLaravel雄弁では、すべての著者名を-Select私はこのSQLを書きたい書籍
SELECT book.book_id,book.book_name,author.author_name,book.price,book.publication
FROM author,book,book_author
WHERE bookauthor.b_id=book.book_id and bookauthor.a_id=author.author_id
に属しLaravel雄弁では、すべての著者名を-Select私はこのSQLを書きたい書籍
SELECT book.book_id,book.book_name,author.author_name,book.price,book.publication
FROM author,book,book_author
WHERE bookauthor.b_id=book.book_id and bookauthor.a_id=author.author_id
eloquent relationshipsを使用してより良い方法があります。ブックモデルは、次の関係に定義しておく必要があります
namespace App;
use Illuminate\Database\Eloquent\Model;
class Book extends Model
{
/**
* Get the authors for the book.
*/
public function authors()
{
return $this->hasMany('App\Author');
}
}
をし、著者はこの本に属している必要があります:あなたは上reduceメソッドを使用することができる唯一の著者名を取得したい場合は
namespace App;
use Illuminate\Database\Eloquent\Model;
class Author extends Model
{
/**
* Get the book of the author.
*/
public function book()
{
return $this->belongsTo('App\Book');
}
}
著者コレクション:
$authors = App\Book::find(1)->authors;
$authorsNames = $authors->reduce(function ($carry, $author) {
$carry[] = $author->name;
return $carry;
}, array());
使用Laravelはジョイン:
bookauthor::Join('book', 'book.book_id', '=', 'bookauthor.b')
->Join('author','bookauthor.a_id','=','author.author_id')
->select('book.book_id','book.book_name','author.author_name','book.price','book.publication')
->get();
これを試してください。幸運:)
回答ありがとう –
ありがとうございます。これは正常に動作しています –