【发布时间】:2015-08-21 16:13:15
【问题描述】:
我有这样的模型设置:
<?php namespace App\Models;
use Illuminate\Database\Eloquent\Model;
class Upload extends Model {
/**
* The database table used by the model.
*
* @var string
*/
protected $table = 'uploads';
/**
* The attributes excluded from the model's JSON form.
*
* @var array
*/
protected $hidden = array('id', 'user', 'created_at', 'updated_at');
public function mime() {
return $this->hasOne('App\Models\Mime', 'mime');
}
}
当JsonSerialize() 被调用时,它会返回:
{
"serverPath": "upload/2015/06/06/21/filename.jpg",
"filename": "filename.jpg",
"mime": "92"
}
这个92 引用另一个表(App\Models\Mime 代表)中的id,并带有一个与之关联的字符串type。我想用上述字符串替换这个92。
{
"serverPath": "upload/2015/06/06/21/filename.jpg",
"filename": "filename.jpg",
"mime": "image/jpeg"
}
这怎么可能?我在Upload 模型中使用protected $appends 尝试了一些东西,但我不确定我是否完全理解如何在模型中使用/访问关系。
澄清表 mimes 包含列 id 和 type,而表 uploads 包含一个名为 mime 的整数列在 mimes
【问题讨论】:
-
我会在退货时说 ->with('mime') - 这有帮助吗?例如
return \Upload::find(1)->with('mime'); -
这样的东西会去哪里?你的意思是当我在另一个函数中返回
Upload模型时?\App\Models\Upload::findOrFail(1)->with('mime')在调用JsonSerialize时只返回{} -
那你现在怎么退货?请用此更新您的问题,因为它可能会提供更好的上下文。另外,您能否尝试不调用 JsonSerialize 我认为所有 Eloquent 模型都会自动转换为 JSON,或者您可以在 Eloquent 模型上执行
->toJson()。 -
这是执行
return new JsonResponse($data)的API 的所有部分。所以或多或少在做return new JsonResponse(\App\Models\Upload::findOrFail(1))
标签: php laravel eloquent laravel-5