如何在不使用laravel 5.2覆盖现有数据的情况下更新DB中的行

时间:2016-07-30 14:43:31

标签: php laravel laravel-5.2

我有一个表格,用于存储用户感兴趣的主题以及用户ID和主题ID。该表格看起来像

Topic name     topic id     User-id
   Sports         1             1
   Education      2             3
   Family         3             1

我想要做的是当一个新用户,比如用户ID' 3'添加他作为主题体育的兴趣,然后第一行应该看起来像这样

Topic name     topic id     User-id
   Sports         1             1,3

当我尝试更新它时会覆盖整个列,如

Topic name     topic id     User-id
   Sports         1             3 

这样做的正确方法是什么?

1 个答案:

答案 0 :(得分:1)

正确的方法是使用Many-To-Many关系:

<强>表格

users (id, ....);
topics (id, ....);
topic_user (topic_id, user_id);

<强> PHP:

class User extends Model {

    public function topics() {
        return $this->belongsToMany('App\Topic');
    }
}

和:

class Topic extends Model {

    public function users() {
        return $this->belongsToMany('App\User');
    }
}

有关详细信息,请参阅https://laravel.com/docs/5.2/eloquent-relationships

我希望这会有所帮助。