4

Laravel パッケージを使用しようとしています。MyVendor/MyPackage を作成しました

ルート、コントローラー、フィルターは既に機能しています。これは私のパッケージのクラスマップです:

"classmap": [
        "src/migrations",
        "src/controllers",
        "src/seeds",
        "src/models"
    ],

これは私のモデルの外観です:

namespace MyVendor\MyPackage\Models;             
class MyModel extends \Illuminate\Database\Eloquent\Model {   
}

これは、名前空間 MyVendor\MyPackage にあるコントローラー内のコードです。

$test = new models\MyModel;      

次のエラーが表示されます: クラス 'MyVendor\MyPackage\models\MyModel' が見つかりません

理由がわかりません。名前空間は初めてなので、これに関連している可能性があります。composer update、composer dump-autoload (パッケージ内) を試しましたが、まだモデルが見つかりません。

get_declared_classes() で宣言されたクラスを取得すると、そこにモデルが表示されません。

問題は、モデル クラスが自動ロードされないことです。

4

2 に答える 2

7

これを試して:

  1. パッケージ内にディレクトリを作成modelsし、パッケージのクラスマップに追加します
  2. 次のモデルを追加YourModel.phpします。

    <?php
    // Note no namespace
    
    use \Illuminate\Database\Eloquent\Model as Eloquent;
    
    class YourModel extends Eloquent {
        //
    }
    
  3. composer dump-autoload最初にパッケージ ディレクトリから実行し、次にルート ディレクトリから実行します
  4. これを routes.php ファイルの先頭に配置して、モデルをテストします。

    <?php
    $testModel = YourModel::get();
    die(var_dump($testModel));
    ?>
    
于 2013-10-02T17:30:58.953 に答える
0

これらはLaravel 4.2で機能します

<?php namespace Vendor\Package;

use \Illuminate\Database\Eloquent\Model as Eloquent;

class Product extends Eloquent {

    ...

}
于 2014-10-07T12:03:59.970 に答える