如何填充编辑表单(一对多关系laravel)

时间:2016-03-03 20:40:44

标签: php laravel-5 one-to-many

我有一个表格可以将数据添加到两个不同的表格(文章和交易)。一篇文章有​​很多交易。交易有一条。我无法弄清楚如何使用Deals表中的数据填充编辑表单。我知道我做错了,但目前它只是用长数组填充编辑表单。我想我需要更改文章控制器和表单值变量。目前我在每个交易日都有优惠。

我正在使用Laravel 5.

文章表有:id,标题,图像,描述,地址。 Deals表包含:id,dealname,article_id,dayID。

FORM:

{!! Form::model($article, ['route' => ['articleUpdate_path', $article->id], 'files' => true, 'method' => 'PATCH']) !!}

    {!! Form::label('title','TITLE') !!}
    {!! Form::text('title', null, ['class' => 'form-control']) !!}
    {!! $errors->first('title','<p class="error">:message</p>')!!}

    {!! Form::label('image','PHOTO') !!}
    {!! Form::file('image', null, ['class' => 'form-control']) !!}

    {!! Form::label('description','DESCRIPTION') !!}
    {!! Form::textarea('description', null, ['class' => 'form-control']) !!}

    {!! Form::label('dealname','Monday') !!}
    {!! Form::text('dealname[]', $deals, null, ['class' => 'form-control']) !!}

    {!! Form::label('dealname','Tuesday') !!}
    {!! Form::text('dealname[]', $deals, null, ['class' => 'form-control']) !!}

    {!! Form::label('dealname','Wednesday') !!}
    {!! Form::text('dealname[]', $deals,null, ['class' => 'form-control']) !!}

    {!! Form::label('address','ADDRESS') !!}
    {!! Form::text('address', null, ['class' => 'form-control']) !!}

    {!! Form::close() !!}

文章控制器

public function edit($id)
{
    $article = Article::find($id);
    $deals = Deal::lists('dealname');
    return view('articles.edit', compact('article', 'deals'));
}

文章模型

class Article extends Model
{
    public function deals()
    {
        return $this->hasMany('App\Deal');
    }  
protected $fillable = array('title', 'photo', 'description', 'address'); 
}

交易模型

class Deal extends Model
{
    public function articles()
    {
        return $this->belongsTo('App\Article')->withTimestamps();
    }
    protected $fillable = array('dealname', 'article_id', 'dayID'); 
}

1 个答案:

答案 0 :(得分:1)

从Laravel 5 - Query Builder文档:

  

$ roles = DB :: table('roles') - &gt; lists('title');

     

此方法将返回角色标题数组。

由于您只是返回$ deals变量,因此您的输出将是上面返回的数组。

为了输出单个交易,您应该在视图中使用“foreach”循环来输出每笔交易的特定变量(正如QuickDanger在其评论中提到的那样)。