为了账号安全,请及时绑定邮箱和手机立即绑定

Laravel 关系似乎不起作用

Laravel 关系似乎不起作用

PHP
FFIVE 2022-06-17 10:12:54
我在 Laravel 中有一个 Item 和 AdvertItem 对象。我想在商品和广告商品之间建立一对一的关系项目类看起来像这样<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class Item extends Model{    //    public function Category(){        return $this->belongsTo(Category::class);    }    public function Currency(){        return $this->hasOne(Currency::class);    }    public function AdvertItem(){        return $this->hasOne(AdvertItems::class);    }}AdvertItem类看起来像这样<?phpnamespace App;use Illuminate\Database\Eloquent\Model;class AdvertItems extends Model{    protected $guarded = [];    //    public function items(){        return $this->belongsTo(Item::class);    }}但是当我调用 advertItem 时,我只看到 item_id = 1 而不是 item 对象。项目表是这样创建的 class CreateItemsTable extends Migration{    /**     * Run the migrations.     *     * @return void     */    public function up()    {        Schema::create('items', function (Blueprint $table) {            $table->bigIncrements('id');            $table->string('description');            $table->unsignedBigInteger('currency_lookup_id');            $table->unsignedBigInteger('category_id')->index();            $table->unsignedBigInteger('price');            $table->string("image_path");            $table->string('sale_ind');            $table->Date('eff_from');            $table->Date('eff_to');            $table->timestamps();        });    }    /**     * Reverse the migrations.     *     * @return void     */    public function down()    {        Schema::dropIfExists('item');    }}广告表是这样创建的class CreateAdvertItemsTable extends Migration{    /**     * Run the migrations.     *     * @return void     */    public function up()    {        Schema::create('advert_items', function (Blueprint $table) {            $table->bigIncrements('id');            $table->unsignedBigInteger('item_id');            $table->unsignedBigInteger('customer_id');            $table->Date('eff_from');            $table->Date('eff_to');            $table->timestamps();        });    }
查看完整描述

1 回答

?
收到一只叮咚

TA贡献1821条经验 获得超4个赞

以下规则将为您提供帮助。

  • 始终以小写字母开头的关系名称。为类而不是方法节省大写。

  • 模型应该是单一的

  • 注意名称的多个。应该只有其中之一的事物应该是单数的。因此,在您的 1:1 关系中,两个关系名称都应该是单数。

AdvertItem 类

  public function item(){

        return $this->belongsTo(Item::class);

    }

那么,如果你有 Item 并且想要 AdvertItem,你load应该


$item->load('advertitem');

或相反


$advertItem->load('item');


查看完整回答
反对 回复 2022-06-17
  • 1 回答
  • 0 关注
  • 61 浏览

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信