我尝试这段代码(通过Fractal)来获得结果:
public static function doIt($array, $transformer)
{
$manager = new Manager();
$serializer = new \League\Fractal\Serializer\ArraySerializer();
$manager->setSerializer($serializer);
if ($array instanceof Collection) {
$resource = new FractalCollection($array, new $transformer);
} else {
$resource = new FractalItem($array, new $transformer);
}
return $manager->createData( $resource )->toArray();
}
Run Code Online (Sandbox Code Playgroud)
你看,我补充道
$serializer = new \League\Fractal\Serializer\ArraySerializer();
$manager->setSerializer($serializer);
Run Code Online (Sandbox Code Playgroud)
从结果数组中删除'data'属性.
array:3 [?
"key" => 1
"title" => "First Level Title"
"childrens" => array:1 [?
"data" => array:16 [? ?-------- it need remove!
0 => array:2 [?
"key" => 2 …Run Code Online (Sandbox Code Playgroud) 如何建立有关系的口才模型?
我有:
人表
id
firstname
lastname
Run Code Online (Sandbox Code Playgroud)
员工表
id
person_id
position
Run Code Online (Sandbox Code Playgroud)
我想做这样的事情:
Employee::create([
'firstname' => 'Jack',
'lastname' => 'London',
'position' => 'writer'
])
Run Code Online (Sandbox Code Playgroud)
我知道,可以创建两个模型,然后将它们关联。但是也许有办法使它更美丽吗?
在这个解决方案中,来自 Laralvel/Eloquent 的官方文档(多态关系)
posts
id - integer
title - string
body - text
videos
id - integer
title - string
url - string
comments
id - integer
body - text
commentable_id - integer
commentable_type - string
Run Code Online (Sandbox Code Playgroud)
我们可以检索帖子或视频:
$post = App\Post::find(1)或者 $post = App\Post::all()
我们可以得到具体的评论
$comment = App\Comment::find(1);
$commentable = $comment->commentable;
Run Code Online (Sandbox Code Playgroud)
在这种情况下,可注释的方法将返回具体Post或Video模型。
但是如何将所有评论整合为集合,其中每个项目Post或Video模型将在哪里?App\Comment::all()预期从评论表返回记录,这不是我们需要的。
例如,我可以查看具体日期的每个帖子.
$users = User::whereHas('posts', function($q){
$q->where('created_at', '>=', '2015-01-01 00:00:00');
})->get();
Run Code Online (Sandbox Code Playgroud)
但是假设,如果我想比较一个帖子模型日期(created_at)和用户模型的日期属性该怎么办?
例如:
$users = User::whereHas('posts', function($q){
$q->where('created_at', '>=', ** $user->customDate ** ? look this);
})->get();
Run Code Online (Sandbox Code Playgroud)
UPD.我在Laravel之外使用Eloquent.