2016-03-29 1 views

答えて

2

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()); 
+1

ありがとうございます。これは正常に動作しています –

1

使用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(); 

これを試してください。幸運:)

+0

回答ありがとう –

関連する問題