小编Mar*_*łek的帖子

返回对象为json时访问雄辩的关系

我目前正在使用Laravel/Lumen构建JSON RESTful API,现在尝试访问存储在此模型关系中的模型属性

// I also want to return User->roles
return User::find(1)->first();
Run Code Online (Sandbox Code Playgroud)

返回:

{
  "id": 2,
  "email": '...'
}
Run Code Online (Sandbox Code Playgroud)

我实际上找到了一种方法,但这似乎非常黑客而且不干净

    // Get user
    $user = User::find($id)->first();

    // Make roles public
    $user->roles = $user->roles;

    // Return object
    return $user;
Run Code Online (Sandbox Code Playgroud)

返回:

{
  "id": 2,
  "email": '...',
  "roles": [
  ...
  ]
}
Run Code Online (Sandbox Code Playgroud)

有没有更好的办法?或者这是一种安全的东西,你想要保护你的数据?但既然你可以访问php中的关系,为什么不应该将它作为json对象返回?

在laravel文档中找不到任何内容

php json laravel eloquent lumen

1
推荐指数
1
解决办法
1986
查看次数

Laravel 5.2软删除不起作用

我有一个简单的应用程序与表格和模型:

<?php

namespace App;

use Illuminate\Database\Eloquent\Model;
use SoftDeletes;
class Post extends Model
{
   protected $table = 'post';

   protected $dates = ['deleted_at'];

   protected $softDelete = true;

}
Run Code Online (Sandbox Code Playgroud)

我试图做软删除的例子,我正在使用路由,例如route.php:

<?php
use App\Post;

use Illuminate\Database\Eloquent\SoftDeletes;
Route::get('/delete', function(){
    $post = new Post();
    Post::find(12)->delete();

});
Run Code Online (Sandbox Code Playgroud)

我有一个使用迁移创建的列"created_at":

    Schema::table('post', function (Blueprint $table) {
        $table->softDeletes();
    });
Run Code Online (Sandbox Code Playgroud)

,但是当我运行网站时,它删除了具有所选ID的行,而不是向此列添加时间.我哪里错了?

soft-delete laravel eloquent laravel-5

1
推荐指数
1
解决办法
3567
查看次数

怎么在Laravel排队?

$id在Laravel中得到一排,如:

$user = User::where("id", $id)->get();
Run Code Online (Sandbox Code Playgroud)

我需要做之后 return $user->first();

我可以更简短地使用此请求吗?

laravel eloquent laravel-5 laravel-5.4

1
推荐指数
1
解决办法
1161
查看次数

多表的雄辩关系

我在 laravel5.4 工作。我创建了四个表作为票证用户公司。在这里,我在票证表中存储了用户 ID。并在用户表中存储公司ID

在这里,我想用该用户的公司名称显示票证的用户名。

在这里,我为它创建了如下所示的关系。

门票型号:

public function requesters(){
    return $this->belongsTo('App\User','requester_id');
}
Run Code Online (Sandbox Code Playgroud)

这里requester_id是创建票证的人

用户模型:

public function company()
{
    return $this->belongsTo('App\Models\Admin\Company');
}
Run Code Online (Sandbox Code Playgroud)

公司型号:

public function Users()
{
    return $this->hasOne('App\Users');
}
Run Code Online (Sandbox Code Playgroud)

在这里,我编写了查询以获取如下所示的用户信息。

Ticket::with('requesters')->orderBy('subject','asc')->paginate(10);
Run Code Online (Sandbox Code Playgroud)

现在,我想获取公司信息或request_id那么我应该在此查询中进行哪些更改以获取公司信息以及票证和用户?

laravel eloquent laravel-5 laravel-5.4

1
推荐指数
1
解决办法
4857
查看次数

柱未找到laravel 5.4

我收到以下错误:

SQLSTATE [42S22]:未找到列:1054'where子句'中的未知列'books.id'(SQL:select*from bookswhere books.id= 98745632564 limit 1)

当我将id值作为id传递时.我在我的数据库中有列名bookID但在上面的错误中它比较books.id = 98745632564.我无法理解book.id来自哪里.

public function showBook($id){
   $book = Book::findOrFail($id);
   return $book;
}
Run Code Online (Sandbox Code Playgroud)

当我使用查询传递id值时,代码完全正常,如下所示

public function showBook($id){
    $book = Book::where('bookID', $id)->find();
    return $book;
}
Run Code Online (Sandbox Code Playgroud)

laravel eloquent laravel-5 laravel-5.4

1
推荐指数
1
解决办法
484
查看次数

为什么我不能在 Laravel Dusk 中使用 body 类选择器?

我正在使用 Laravel 5.5 和 Dusk 2.0。我有以下 html。

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="utf-8">
</head>
<body class="my-body-class" id="my-body-div">
    <div class="my-content-class" id="my-content-div">
        Content goes here.
    </div>
</body>
</html>
Run Code Online (Sandbox Code Playgroud)

这是我的黄昏测试。

public function testBasicExample()
{
    $this->browse(function (Browser $browser) {
        $browser->visit('/test/admin-fixed-layout');
        $this->assertNotNull($browser->element('.my-content-class'));
        $this->assertNotNull($browser->element('#my-content-div'));
        // $this->assertNotNull($browser->element('.my-body-class'));
        $this->assertNotNull($browser->element('#my-body-div'));
    });
}
Run Code Online (Sandbox Code Playgroud)

如果我取消注释使用主体类选择器的断言,则测试失败。为什么?

laravel laravel-5 laravel-dusk laravel-5.5 laravel-dusk2

1
推荐指数
1
解决办法
780
查看次数

获取 Laravel 5.2 Collection 中列名的唯一值计数

我试图从我的产品表中获取独特品牌的数量,以及来自 Laravel 集合的数量。

我能够使用产品的特定查询来做到这一点,但我现在使用集合的原因是因为我还想获得产品的产品来源(国家/地区)、条件(使用/新),我认为它使用来自一个查询的集合会更好,而不是对每个数据使用三个单独的查询。

下面的代码有效,但没有显示每个唯一品牌的计数。

这是表 在此处输入图片说明

这是我的控制器

$products = DB::table('products')
 ->select('products.*')
 ->whereNull('products.deleted_at')
 ->get();

$BrandCollection = collect($products);
$Brands = $BrandCollection->unique('Brand')->sortBy('Brand')->keyBy('Brand')->pluck('Brand');
Run Code Online (Sandbox Code Playgroud)

所以,我正在寻找的结果是

惠普 3
东芝 2
联想 1

我认为可以使用 concat 来完成集合,但由于我使用的是 Laravel 5.2,我正在寻找其他解决方案。

php laravel laravel-5 laravel-collection laravel-5.2

1
推荐指数
1
解决办法
2742
查看次数

如何使用自定义键mapWithKeys返回数组?

这是在Laravel中迭代集合的代码:

$usersData = $users->mapWithKeys(function ($item) {
    return [$item->id => array("name" => $item->name, "email" => $item->email, "id" => $item->id)];
 });
Run Code Online (Sandbox Code Playgroud)

我试图获得$usersData具有自定义key和值作为数组的数组。

但是结果我得到了:

array:1 [  0 => array:3 [    "name" => "Doctor"    "email" => "doctor@il.com"    "id" => 2  ]]
Run Code Online (Sandbox Code Playgroud)

相反,键2我有0数组元素的键。

laravel laravel-collection laravel-5.3 laravel-5.4 laravel-5.5

1
推荐指数
1
解决办法
1947
查看次数

在 null 上调用成员函数 diffForHumans()

我正在系统中获取我的帖子的输出,但是我收到了这个 errror Call to a member function diffForHumans() on null...你能帮帮我吗?谢谢...

文章模型是:

protected $fillable=[
        'user_id','content','live','post_on'
    ];

public function setLiveAttribute($value)
{
    $this->attributes['live']=(boolean)($value);
}
Run Code Online (Sandbox Code Playgroud)

而文章控制器是

public function index()
{
    $articles = Article::all();
    return view('articles.index', compact('articles'));
}

public function create()
{   
    return view('articles.create');
}

public function store(Request $request)
{


    Article::create($request->all());

}

public function show()
{   

}

public function update()
{   

}

public function destroy()
{   

}
Run Code Online (Sandbox Code Playgroud)

laravel eloquent php-carbon laravel-5

1
推荐指数
1
解决办法
3548
查看次数

如何在laravel中使用路由名称传递查询参数?

我知道这个

{{route('editApplication', ['id' => $application->id])}} == /application/edit/{id}
Run Code Online (Sandbox Code Playgroud)

但是我需要

?? == /application/edit?appId=id
Run Code Online (Sandbox Code Playgroud)

任何人,请替换“??” 你的回答对我有帮助。

laravel laravel-routing laravel-6

1
推荐指数
1
解决办法
3914
查看次数