Laravel没有回归BelongsTo

时间:2016-07-13 01:58:34

标签: laravel laravel-5 eloquent

谢谢大家,我有两个表名为Produto,另一个名称为ProdutoCategoria名称。当我建立关系模型时,只有ProdutoCategoria对象返回Produdo,但是Produto不返回对象ProdutoCategoria,为什么?。

    class ProdutoCateg extends Model
{
    public function produtos(){
        return $this->hasMany('app\Produto');
    }
}



class Produto extends Model
{
    public function categoria(){
        return $this->belongsTo('app\ProdutoCateg');
    }
}


class Fktables extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::table('produtos', function ($table){
            $table->foreign('id_produto_categs')->references('id')->on('produto_categs');
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        //
    }
}

2 个答案:

答案 0 :(得分:2)

尝试添加关联的foreign key字段,Laravel无法猜测它,因为您没有遵循命名约定数据库架构。

class Produto extends Model
{
    public function categoria(){
        return $this->belongsTo('App\ProdutoCateg', 'id_produto_categs');
    }
}

示例

产品模型应该有一个名为products的表 和 ProductCategory 模型应该有一个名为product_categories的表, 现在要创建与类别使用table_name (singular) + _id的关系,在这种情况下将是product_category_id。我希望这是有道理的。

为了让这项功能自动生效,您需要在produto_categ_id表格中将FK更改为produtos

答案 1 :(得分:0)

您应该尝试将app更改为App 例如:

public function produtos {
   return $this->hasMany('App\Produto');
}