1

通常は同じ種類のデータを保持する基本的なページ モデルがありますが、レコードに追加情報を追加する必要がある場合があります。

Wordpress と同じように、カスタム フィールド / メタデータをレコードに追加する方法はありますか?

アドバイスをいただければ幸いです。

ありがとう

4

2 に答える 2

0

独自のメタデータ ソリューションを展開するのは難しすぎるとは思いません。簡単にするために、これを行うプラグインを次に示します。

https://github.com/kodeine/laravel-meta

ただし、配列では機能するとは思いませんが、Wordpress メタでは機能すると思いますか? 独自のシステムを作成する場合は、方法があると確信しています。

于 2016-01-29T00:23:15.157 に答える
0

考えられる解決策の 1 つは、次のような composer パッケージを使用することです。

https://packagist.org/packages/navruzm/lmongo

そのパッケージは、こちらの Github ページでうまく説明されています。

これにより、Eloquent モデルの MongoDB ドライバーが可能になります。さらに、インターフェイス/クラスを使用して開発する場合(ここここRepositoryでうまく説明されている懸念の分離手法)、前述のパッケージを使用すると、ページに MongoDB を使用できますが、アプリケーションの他のリソースには使用できません。

例:

  • フォルダを作成するapp/src/ExampleAppName/Repository/Page
  • そのフォルダー内PageRepositoryInterface.phpに (おおまかに) 次のようなファイルを作成します。

    <?php namespace ExampleAppName\Repository\Page;
    
    interface PageRepositoryInterface {
    
        public function all();
        public function find($id);
        public function create($input);
        //... and so on
    
    }
    
  • 同じフォルダー内に、MongoPageRepository.php(大まかに) 次のような別のファイルを作成します。

    <?php namespace ExampleAppName\Repository\Page;
    
    class MongoPageRepository implements PageRepositoryInterface {
    
        protected $mongo;
    
        public function __construct(LMongo $mongo)
        {
            $this->mongo = $mongo->connection();
        }
    
        //...Other code ...
    
        public function create($input)
        {
            //Some kind of validation
            $this->mongo->collection('pages')->insert($input);    
        }
    
        //...Other code ...
    
    }
    
  • App::bind('PageRepositoryInterface', 'MongoPageRepository');どこか ( など) に電話するかapp/start/global.php、 を調べる必要がありますServiceProviders

  • 次に、次のように、関連するコントローラーから Mongo リポジトリーを使用できます。

    <?php
    
    class PageController extends \BaseController {
    
        public function __construct(PageRepositoryInterface $pages)
        {
            $this->pages = $pages;
        }
    
        //...Other code...
    
        public function store()
        {
            $input = Input::get();
    
            $this->pages->create($input);
    
            //Handle response, etc...
        }
    
    }
    

MongoDB は「スキーマレス」データベースであり、必要に応じて追加のメタデータを定義できます。

これは完全な回答ではないことに注意してください。「コピーして貼り付ける」ソリューションではなく、ガイドとして使用する必要があります。重要なこと (エラー処理、検証、不要なフィールドの削除など$input) を省略しました。私が言及したリソースを参照するか、IRC の #laravel チャンネルに立ち寄ることをお勧めします。

于 2013-08-23T15:27:48.380 に答える