标签: eloquent

Laravel雄辩地计算了一种关系

我是laravel和eloquent的新手,我不确定这是否可能.但是我有2张桌子,有一对多的关系.一个是"位置",一个是"用户".一个位置可以有很多用户.

因此,如果我希望获得所有用户的所有位置,我会这样做:

Location::with("users")->get();
Run Code Online (Sandbox Code Playgroud)

但我也想知道每个位置有多少用户,我试过这样做

Location::with("users")->count("users")->get();
Run Code Online (Sandbox Code Playgroud)

但那没用.

php laravel eloquent

28
推荐指数
3
解决办法
2万
查看次数

如何将参数传递给Laravel DB :: transaction()

来自laravel文档:数据库事务.它说:

DB::transaction(function() {
    DB::table('users')->update(array('votes' => 1));
    DB::table('posts')->delete();
});
Run Code Online (Sandbox Code Playgroud)

在这里,明确输入1来更新用户......我试着使用变量,

$id = 3;
DB::transaction(function() {
    DB::table('users')->where('id','=',$id)->get();
});
Run Code Online (Sandbox Code Playgroud)

它抛出一个错误:

Undefined variable: id
Run Code Online (Sandbox Code Playgroud)

我也尝试将$ id作为参数放置如下:

$id = 3;
DB::transaction(function($id) {
    DB::table('users')->where('id', '=', $id)->get();
});
Run Code Online (Sandbox Code Playgroud)

仍然是一个错误:

类Illuminate\Database\MySqlConnection的对象无法转换为字符串

我做错了什么吗?请指教.谢谢...

database transactions laravel eloquent

28
推荐指数
2
解决办法
2万
查看次数

laravel eloquent列表 - 对列值列表进行排序

使用laravel,我在表单上创建一个选择框.我一直在使用帮助器来创建选择框,一切正常.

我从数据库中检索选择框的数据,并使用以下内容检索数据:

$data = model::lists('name','id')
Run Code Online (Sandbox Code Playgroud)

再次一切正常,这将返回预期的数组

我的问题是,我似乎无法排序这个列表 - 我尝试添加orderBy()但没有快乐.

除了使用本机php函数之外,是否有一个laravel方法对列表进行排序?

laravel eloquent

28
推荐指数
1
解决办法
4万
查看次数

laravel migration重新组织列顺序

在表中创建新列时,可以使用 - > after('列名称)来指示它的去向.如何创建按我想要的正确顺序重新排序列的迁移?

fluent eloquent laravel-4

28
推荐指数
3
解决办法
1万
查看次数

将Eloquent对象作为JSON返回时动态隐藏某些列?

在将Eloquent对象作为JSON返回时,如何动态隐藏某些列?例如,隐藏"密码"列:

$users = User::all();
return Response::json($users);
Run Code Online (Sandbox Code Playgroud)

我知道我可以在模型中设置受保护的属性($ hidden$ visible),但是如何动态设置它们呢?我可能想在不同的上下文中隐藏或显示不同的列.

laravel eloquent laravel-4

28
推荐指数
6
解决办法
3万
查看次数

Laravel有很多地方

我有3张桌子,汽车,公寓和商店.每张桌子都有照片.照片存储在数据库中.我想只使用一张桌子拍照,我不想为每辆汽车,公寓和商店创建照片表.

照片表结构是这样的;

| id |           photo_url        | type  | destination_id |
------------------------------------------------------------
  1  |   http://example.com/1.jpg | Cars  |      1         |
  2  |   http://example.com/2.jpg | Flats |      1         |
  3  |   http://example.com/3.jpg | Flats |      2         |
  4  |   http://example.com/4.jpg | Shops |      1         |
  5  |   http://example.com/3.jpg | Shops |      2         |
Run Code Online (Sandbox Code Playgroud)

我需要在Shops,Flats和Cars模型类中定义hasMany与类型的关系.

这样做的正确方法是什么?

orm laravel eloquent laravel-4

28
推荐指数
2
解决办法
5万
查看次数

具有两个主键的Laravel模型更新

我正在尝试更新具有两个主键的Model.

模型

namespace App;

use Illuminate\Database\Eloquent\Model;

class Inventory extends Model
{
    /**
     * The table associated with the model.
     */
    protected $table = 'inventories';

    /**
     * Indicates model primary keys.
     */
    protected $primaryKey = ['user_id', 'stock_id'];
...
Run Code Online (Sandbox Code Playgroud)

移民

Schema::create('inventories', function (Blueprint $table) {
    $table->integer('user_id')->unsigned();
    $table->integer('stock_id')->unsigned();
    $table->bigInteger('quantity');

    $table->primary(['user_id', 'stock_id']);

    $table->foreign('user_id')->references('id')->on('users')
        ->onUpdate('restrict')
        ->onDelete('cascade');
    $table->foreign('stock_id')->references('id')->on('stocks')
        ->onUpdate('restrict')
        ->onDelete('cascade');
});
Run Code Online (Sandbox Code Playgroud)

这是应该更新Inventory模型的代码,但它没有.

$inventory = Inventory::where('user_id', $user->id)->where('stock_id', $order->stock->id)->first();
$inventory->quantity += $order->quantity;
$inventory->save();
Run Code Online (Sandbox Code Playgroud)

我收到此错误:

Illegal offset type
Run Code Online (Sandbox Code Playgroud)

我也尝试使用updateOrCreate()方法.它不起作用(我得到同样的错误).

谁能告诉我们应该如何更新带有两个主键的Model?

php composite-primary-key laravel eloquent laravel-5

28
推荐指数
1
解决办法
4万
查看次数

在laravel中查找列的最大值

问题开始是因为我有一个表(Clientes),主键不是自动增量.我想选择存储在列数据库中的最大值.喜欢这个选择,但有雄辩的orm(Laravel):

SELECT MAX(Id) FROM Clientes
Run Code Online (Sandbox Code Playgroud)

我该怎么办?

我试过了:

Cliente::with('id')->max(id)
Cliente::select('id')->max(id)
Run Code Online (Sandbox Code Playgroud)

我不想做一个简单的原始"SELECT MAX(ID)FROM Clientes"我不能做.谢谢大家!

laravel eloquent laravel-5.3

28
推荐指数
4
解决办法
5万
查看次数

在Laravel app的数据库中存储数组或std对象

数据库表在列中存储Array或stdObject的模式是什么?

当我使用 - > string并插入一个数组变量时,它只在db列中存储单词"Array".

Laravel是否支持阵列?

如果不是,我应该采用什么方法?

arrays laravel eloquent

27
推荐指数
2
解决办法
4万
查看次数

有一个通过Laravel Eloquent

我有三个表garages,cars,securities.

证券是保证一辆车安全的证券,你可以拥有多个证券,但一个证券只能保证一辆汽车的安全.车库是汽车的所在地,也是证券.

我想要的是列出所有的证券并知道他所在车库的名称.问题是securities没有包含车库id的列,只有他保持安全的汽车的id,但汽车有车库的id.

Laravel雄辩有一个名为方法hasManyThrough,但securities有一个garage通过cars唯一的.

这是表格:

车库表:

-----------------------------------
|garage_id|garage_name|garage_size|
-----------------------------------
|        1|   Garage 1|        200|
-----------------------------------
|        2|   Garage 2|        400|
-----------------------------------
Run Code Online (Sandbox Code Playgroud)

汽车表:

---------------------------
|car_id|car_name|garage_id|
---------------------------
|     1|   Car 1|        1|
---------------------------
|     2|   Car 2|        1|
---------------------------
|     3|   Car 3|        2|
---------------------------
Run Code Online (Sandbox Code Playgroud)

证券表:

----------------------------------
|security_id|security_name|car_id|
----------------------------------
|          1|  Security 1|      1|
----------------------------------
|          2|  Security 2|      1|
----------------------------------
|          3|  Security 3|      2| …
Run Code Online (Sandbox Code Playgroud)

php laravel eloquent laravel-4 laravel-5

27
推荐指数
3
解决办法
3万
查看次数