私はPHPのOOPに非常に慣れていないので、これは今日の2回目の投稿です。それがばかげた質問である場合は、我慢してください...
「JOB」オブジェクトで使用できるようにする美しいクラスを作成しました。これには、この単一のオブジェクトを使用して多くのテーブルからデータをプルし、エンドユーザーが関連データを表示できるようにすることが含まれます。たとえば、私のクラスでは、次のようになっています。
public function showProjectManager() {
$q = "SELECT m.name FROM " . jJOBS . " AS j JOIN " . jMEI . " AS m ON m.uid = j.mei WHERE id = " . $this->id;
$r = $this->_dblink->query($q);
$row = $r->fetch_assoc();
return $row['name'];
}
jJOBSテーブルに格納されているデータは、別のテーブルのIDを参照する単なる数値であるためです。メインのjJOBSテーブルには、このようなデータがいくつか保存されています。
したがって、コードの別のセクションには、ユーザーが特定の「JOB」を選択できるドロップダウンボックスがあり、AJAX呼び出しを使用してそのJOBからのデータを表示したいと思います。私がやろうとしているのは、JOBオブジェクト(showProjectManagerメソッドを含む)を作成し、mysqli_fetch_objectを使用してデータベースからすべてのプロパティを読み取り、次に次のようにshowProjectManagerメソッドを呼び出すことです。
$disp = new Job();
$q = "SELECT * FROM " . jJOBS . " WHERE id = " . $job_id;
$r = $jobsdb->query($q);
$disp = $r->fetch_object();
$zList .= "<li><span class='smLabels l'>Project Manager :</span>\n<span class='smText r'>" . $disp->showProjectManager() . "</span></li>";
しかし、DBからオブジェクトをフェッチするたびに、$dispオブジェクトはstdClassに戻ります。適切なクラスを維持し、DBから必要な値にアクセスするにはどうすればよいですか?私がこのテーマについて読んだことはすべて、特にこのシナリオでは、信じられないほど複雑に見えるDataMapperの使用を求めています。