插入关系模型laravel雄辩

时间:2013-10-23 09:03:31

标签: php laravel relationship eloquent

我是laravel 4的新手,我不知道如何制作和保存相关模型。

表格消息:id | user | message | parent

例如:

class Message extends Eloquent {

   public function user(){
      return $this->belongs_to('User', 'id');
   }

   public function child(){
      return $this->hasMany('Message', 'parent');
   }

   public function parent(){
      return $this->belongs_to('Message', 'id')
   }

 }

因此,如果您的对话中有消息,则此消息可能有也可能没有孩子或父母,并且始终有一个用户发出消息。所以,如果我想以这种方式保存对话,我该怎么做?

例如,我必须跟随对话:

  

John(1)说: 大家好!
   马克(3)回复: 嘿那里!
   Hans(4)回应: 嗨,约翰    彼得(2)回应: Goodmorning。

现在我是约翰,我想将此对话保存如下:

  id  |  user  |    message    | parent
========================================
1     | 1      | Hi, All!      | NULL
2     | 3      | Hey there!    | 1
3     | 4      | Hi john       | 1
4     | 2      | Goodmorning.  | 1

我可以单独保存它们,但我认为必须有比下面更好的方法:

$parent = NULL;

foreach($messages as $message){
   $model = new Message;
      $model->user = $message['user'];
      $model->message = $message['value'];
      if(!is_null($parent)){
         $model->parent = $parent;
      }
   $model->save();
   if(is_null($parent)){
      $parent = $model->id;
   }
}

1 个答案:

答案 0 :(得分:0)

我看到的最初问题是你说消息的父亲总是本身,你需要指定一个额外的无符号整数来关联。这是一个例子:

public function parent(){
    return $this->belongs_to('Message', 'parent_id')
}

您还需要为孩子使用相同的'parent_id'

public function children(){
    return $this->hasMany('Message', 'parent_id');
}