gpt4 book ai didi

php - 设置模型响应与关系

转载 作者:行者123 更新时间:2023-11-28 23:45:13 25 4
gpt4 key购买 nike

我使用 Laravel 4.2。我有以下代码:

LogMessage 模型:

class LogMessage extends Eloquent {
public function type() {
return $this->belongsTo('LogMessageType');
}
}

简单路线:

Route::get('/test', function() {
return LogMessage::take(1)->with('type')->get();
});

响应如下:

[
{
"ip": "192.168.0.100",
"ts": "2015-11-11 12:22:58",
"info": "some info",
"type": {
"id": "1",
"name": "login"
}
}
]

一切都很好,但我需要这样的回应:

[
{
"ip": "192.168.0.100",
"ts": "2015-11-11 12:22:58",
"info": "some info",
"type": "login"
}
]

我只需要从 LogMessageType 模型加载 name 属性并将其粘贴到 LogMessagetype 属性中.

我是 Laravel 的新手。我必须做什么?任何建议,谢谢:)

最佳答案

对此没有内置的 ORM 方法。访问它的两种方法是在您想要访问它时链接它:

$logMessage->type->name

或者手动构建你想要的数组响应。如果严格基于您的示例,将会出现一个奇怪的功能问题,因为您不想用标量值覆盖“类型”关系。做了如下调整:

Route::get('/test', function() {
$message_response = LogMessage::first();
$message_response->type_name = $message_response->type->name;
return $message_response;
});

这与第一个示例基本相同,但更接近您想要的输出。如果您正在处理一个集合而不是一个单一的 Eloquent 模型,那么您将需要使用 get() 和一个 foreach() 来构建您的响应集合/数组:

Route::get('/test', function() {
$message_response = new Collection; // or Array;
$messages = LogMessage::with('type')->get();
foreach ($messages as $message)
{
$message->type_name = $messages->type->name;
// you can also completely build your response array from scratch here if you wish
$message_response->add($message);
}
return $message_response;
});

关于php - 设置模型响应与关系,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/33727101/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com