我对Laravel非常陌生。你可以帮我解决一个小问题:我不能在集合中返回,只能返回模型中定义的关系中特定列的值。我将解释:
我有两张table:
1-体细胞
2-文件
- 迁移次数:**
1-托莫斯
private $table = 'tomos';
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create($this->table, function (Blueprint $table) {
$table->increments('id');
$table->string('name')->nullable(false);
$table->text('description')->nullable(true);
$table->boolean('active')->default(true);
$table->timestamps();
});
}
2-文件
private $table = 'documents';
/**
* Run the migrations.
*
* @return void
*/
public function up()
{
Schema::create($this->table, function (Blueprint $table) {
$table->increments('id');
$table->date('date')->nullable(false);
$table->integer('provider_id');
$table->integer('tomo_id');
$table->string('folio')->nullable(false);
$table->integer('user_id');
$table->text('description');
$table->timestamps();
$table->foreign('provider_id')
->references('id')->on('providers');
$table->foreign('tomo_id')
->references('id')->on('tomos');
$table->foreign('user_id')
->references('id')->on('users');
});
}
- 关系**
1-友
public function document()
{
return $this->hasMany(Document::class);
}
2-文件
public function tomo()
{
return $this->belongsTo(Tomo::class);
}
- 主计长**
class Documents extends Controller
{
public function read(Request $request)
{
$provider = $request->only('id');
$documents = Document::select(['id', 'date', 'tomo_id', 'description'])
->with([
'tomo' => function ($query) {
$query->select('id', 'name');
}
])->orderBy('date', 'ASC')
->paginate(25);
return $documents;
}
}
我得到了JSON格式的以下响应:
current_page 1
data […]
0 {…}
id 2
date 2018-12-01
tomo_id 1
description 1
tomo {…}
id 1
name Tomo 1
但是...我不希望键('tomo ')返回一个对象,我希望它返回列('name')的值作为字符串。
current_page 1
data […]
0 {…}
id 2
date 2018-12-01
tomo_id 1
description 1
tomo Tomo 1
非常感谢您的评分
4条答案
按热度按时间bt1cpqcv1#
首先,您需要添加
protected $appends = array('tomo_name');
作为属性,因为这是模型表中不存在的属性。之后,您可以访问如下所示的断层名称
->tomo_name
我不能100%肯定这段代码可以用复制粘贴的方式工作,但是你可能会得到这个想法,并在上面多做一些工作。
哦,请注意,加载属性时,每次都会在数据库中查询那个“tomo”。
5t7ly7z52#
非常感谢:彼得和蒙泰亚努·彼得里索
特别致:蒙泰亚努·彼得里索
我已经能够用您向我建议的解决方案来解决我的问题,以前我使用**'join'**来实现它:
现在,在您的帮助下,使用属性可以创造奇迹:
文档模型
文控员
现在它以我期望的方式返回数据
太感谢你了!
a0x5cqrl3#
试试这个
zsohkypk4#
在控制器中,尝试: