0

私は簡単な製品とカテゴリを追加しています。カテゴリには多くの製品があります。これが私のコードです:

カテゴリ テーブルの作成:

Schema::create('categories', function($table){
        $table->increments('id');
        $table->string('name');
        $table->timestamps();
    });

製品テーブルの作成:

Schema::create('products', function($table){
        $table->increments('id');
        $table->integer('category_id')->unsigned();
        $table->foreign('category_id')->references('id')->on('categories');
        $table->string('title');
        $table->timestamps();
    });

製品コントローラ:

public function postCreate(){
    $validator = Validator::make(Input::all(), Product::$rules);
    if($validator->passes()){
        $product = new Product;
        $product->category_id = Input::get('category_id');
        $product->title = Input::get('title');
        $product->save();
        return Redirect::to('admin/products/index')
            ->with('message', 'Product Created');
    }
    return Redirect::to('admin/product/index')
        ->with('message', 'Something went wrong')
        ->withErrors($validator)
        ->withInput();
}

次に、私のindex.blade.phpで

{{ Form::open(array('url'=>'admin/products/create', 'files'=>true)) }}
    <p>
        {{ Form::label('category_id', 'Category') }}
        {{ Form::select('category_id', $categories) }}
    </p>
    <p>
        {{ Form::label('title') }}
        {{ Form::text('title') }}
    </p>
    {{ Form::submit('Create Product', array('class'=>'secondary-cart-btn')) }}
    {{ Form::close() }}

私のルートでは:

Route::controller('admin/categories', 'CategoriesController');
Route::controller('admin/products', 'ProductsController');

ここでの問題は、カテゴリ テーブルにアイテム/データがない場合、製品ページが表示されることですが、もちろん、カテゴリ データがないため、選択ボックスにデータがありません。しかし、Category テーブルにデータを入力すると、製品ページに「おっと、問題が発生したようです」というエラーが表示されます。問題は、Category テーブルのデータを取得していない外部キーにあると思います。私のコードのどこに問題があるのか​​教えていただけませんか? そしてそれを機能させる方法。

app.php でデバッグをオンにすると、次のように表示されます。

class ProductsController extends BaseController{
public function __construct() {
    $this->beforeFilter('csrf', array('on'=>'post'));
}
public function getIndex(){
    $categories = array();
    foreach (Category::all() as $category) {
        $categories[$category->id] = $categories->name;
    }
    return View::make('products.index')

ErrorException (E_NOTICE) 非オブジェクトのプロパティを取得しようとしています

Foreach 条件が強調表示されました。このコードの問題点を教えてください。

4

0 に答える 0