Laravel 5.1 - 雄辩的关系更新功能

时间:2015-09-13 23:38:17

标签: laravel sql-update laravel-5.1

我正在使用Laravel 5.1。

我有两个表,user表和users_detail表,oneToOne关系。 我已经成功将两个数据表显示为一种形式。

现在我想在我的控制器中运行update功能。我已经知道如何在我的其他项目中的单个表中运行update函数。你们中的任何人都可以告诉我如何在单个控制器中运行update这个两个表吗?

我们是否需要使用此Laravel update()函数?或者?

我在view

上使用此功能
...
{!! Form::model($users, ['method' => 'PATCH', 'route' => 'dashboard.user.update', $users -> id]) !!}
    <div class="form-group">
        {!! Form::label('User ID', 'User ID:') !!}
        {!! Form::text('id', $users->id, $attributes = array('id'=>'disabledInput', 'Disabled', 'class'=>'form-control', 'placeholder'=>'User ID')); !!}
    </div>
...
    <div class="form-group">
        {!! Form::label('Place Of Birth', 'Place Of Birth:') !!}
        {!! Form::text('placeOfBirth', $users->UsersDetail->placeOfBirth, $attributes = array('class'=>'form-control', 'placeholder'=>'Place Of Birth')); !!}
    </div>
...
...
{!! Form::close() !!}
...

2 个答案:

答案 0 :(得分:1)

这是一个很好的技巧,可以在一行中完成所有这些。 associate()用于更新belongsTo()关系。

它会像这样工作

    $user = User::find($id);
    $record= new User_Detail($request->all());

    $record->user()->associate($user);
    $record->save();

对于多对多关系,您可以使用附加来同步模型

我在这个例子中使用文章。

    $new_article = new Article($request->all());
    $new_article->save(); //I need to save it first so that we the article ID

    Auth::user()->article()->attach($new_artcile->id);

答案 1 :(得分:0)

最后我找到了办法。这并不像我那么困难。

public function update(Request $request, $id) {
    //          
    $usersUpdate = $request->all(); //get all value from form

    $users = User::find($id); //find the primary key of User table
    $usersDetail = UsersDetail::find($id); //find the foreign key UsersDetail table

    $users->update($usersUpdate); //update the User table
    $usersDetail->update($usersUpdate); //update the UsersDetail table

    return redirect('dashboard/user');
}