2016-10-21 6 views
0

純粋な好奇心の外に、誰でもすぐに教えてくれますか?私はそのように実装していませんでしたが、後ろを振り返ると、それができるかどうか疑問に思います。ここではシナリオです:PHPを使用してデータを取得すると、別のオブジェクトを含むオブジェクトにデータを取り込むことができますか?

製品、サービスのテーブルとの両方の定義コスト

Product ID |  Name 
    1  | Product A 
    2  | Product B 

Service ID | Name 
    1  | Service A 
    2  | Service B 
    3  | Service C 

Price ID | Cost | Product ID | Service ID 
    1  | 1  |  1  | 1 
    2  | 2  |  1  | 3 
    3  | 3  |  2  | 2 
    4  | 4  |  2  | 3 
表データオブジェクトがあったのであれば

との関係表は、そこに次のようになります。

  • クラス属性を持つ製品:ID、名前、サービスの配列。 、ID、名前

//$query = obtain a list of all products with services and prices; 
//$query = obtain a product and all it's associated services and prices; 
$statement = $pdo->prepare($query); 
$statement -> execute(); 
$results = $statement ->fetchAll(PDO::FETCH_CLASS,"Product"); 

答えて

1

PDOが指定されたオブジェクトへの任意のリレーショナルデータをネストのサポートを持っていないようコスト:

  • サービスクラスには属性があります。 fetchのドキュメントをご覧ください。おそらく、製品の関係をProductクラス自体にロードし、それを手動で呼び出すために必要なロジックを構築できます。

    PDOがクラスプロパティの値を__construct()より前に注入すると、コンストラクタ内でいくつかのブードゥー教の魔法を引き出すことができるかもしれません。

    いずれにせよ、これは通常、実在のORMレイヤが提供できるものの1つです。そして、someareoutthere

  • +0

    ありがとうございました。うん、これは昨日行われていない。私は実際にプロジェクトをオンラインで見ていただけで、このシナリオが再び頭に浮かんできたので、ここでそれを出すと思いました。私はあなたのリンクを確かにチェックします。 :) – mcv

    +0

    助けになるのはうれしいです。ああ、私たちが美しい[Eloquent](https://laravel.com/docs/5.3/eloquent)を忘れないように! –

    関連する問題