2 つのモデルがあるとします。
class Book
{
public $book_id;
public $book_author_id;
public $title;
}
class Author
{
public $author_id;
public $author_name;
}
私はこのようなものを書くことに慣れています:
$DB->query("SELECT book_id, title, author_name
FROM book
LEFT JOIN author
ON book_author_id = author_id
");
この関連付けに対して個別のクエリを作成することに興味がないと仮定しましょう。続行するにはどうすればよいですか?ここに私が聞いたいくつかのことがあります:
- JOIN の MySQL VIEW を作成する
- VIEW のモデル クラスを作成する
私が取り組んでいるアプリケーションには、数十のテーブルが含まれており、手続き型コードで高度に最適化されています (たとえば、どこにも SELECT * はほとんどありません)。より保守しやすいようにリファクタリングしています (私も元の作成者です) が、ファイルの構造や DB 呼び出しを損なうことなく、必要に応じて結合を使用できる柔軟性を持ちたいと考えています。
おそらく関連する質問は、他のモデルを含めることに関連しています。
class Author
{
public $author_id;
public $author_name;
/* @var Book */ //<--don't really fully understand this but I've seen something like it somewhere
public (array) $authors_books;
}
まだ回答を探していますが、私の方法でリンクを送っていただければ幸いです。