将数据发送到多个表
我试图做一个聊天系统,我遇到了麻烦,我的理念如下:
当用户发送消息时,该消息必须保存在我的数据库中的两个表中......但它不起作用,消息只保存在一个表中。
公共职能sendMessage()
$data = $this->request->data();
$sessionId = $data['idSession'];
$userId = $this->request->session()->read('Auth.User.id');
$msg = $data['message'];
$typeMessage = $data['type'];
$messageTable = TableRegistry::get('messages');
$messageAllTable = TableRegistry::get('mensage_alls');
if ($typeMessage == 1)
{
$message['session_private_id'] = $sessionId;
}
else
{
$message['session_id'] = $sessionId;
}
$message = array_merge($message, array(
'user_id' => $userId,
'message' => $msg,
'created_at' => new DateTime(date("Y-m-d H:i:s")),
));
$messageEntity = $messageTable->newEntity();
$messageEntity = $messageTable->patchEntity($messageEntity, $message, ['validate' => false]);
$resposta = $messageTable->save($messageEntity);
$this->response->body($resposta);
return $this->response;
我是CakePHP的初学者,所以,不需要叫我哑巴。
从现在开始感谢。 抱歉我的英文不好。
忽略你想要复制数据的原因(通常来说,这听起来不是一件好事),但它不起作用的原因是你永远不会将它保存到第二张表中。 你需要至少打电话给一些事情:
$resposta = $messageTable->save($messageEntity);
$messageCopy = $messageAllTable->newEntity($messageEntity);
$respostaCopy = $messageAllTable->save($messageCopy);
$this->response->body($resposta && $respostaCopy);
如果您的意思是想始终自动复制到辅助表中,则可以将行为添加到主消息表中。 例如,一个简单的版本看起来像这样:
在MessageTable.php中:
namespace AppModelTable;
use CakeORMTable;
class MessageTable extends Table
{
public function initialize(array $config)
{
// Add this line
$this->addBehavior('CopyMessage');
}
}
并创建一个src / Model / Behavior / CopyMessageBehavior.php:
namespace AppModelBehavior;
use CakeORMBehavior;
class CopyMessageBehavior extends Behavior
{
public function copyMessage(Entity $entity)
{
$messageAllTable = TableRegistry::get('mensage_alls');
$messageCopy =messageAllTable->newEntity($messageEntity);
$messageAllTable->save($messageCopy);
}
public function beforeSave(Event $event, EntityInterface $entity)
{
$this->copyMessage($entity);
}
}
链接地址: http://www.djcxy.com/p/58835.html