我是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)
但那没用.
来自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的对象无法转换为字符串
我做错了什么吗?请指教.谢谢...
使用laravel,我在表单上创建一个选择框.我一直在使用帮助器来创建选择框,一切正常.
我从数据库中检索选择框的数据,并使用以下内容检索数据:
$data = model::lists('name','id')
Run Code Online (Sandbox Code Playgroud)
再次一切正常,这将返回预期的数组
我的问题是,我似乎无法排序这个列表 - 我尝试添加orderBy()但没有快乐.
除了使用本机php函数之外,是否有一个laravel方法对列表进行排序?
在表中创建新列时,可以使用 - > after('列名称)来指示它的去向.如何创建按我想要的正确顺序重新排序列的迁移?
在将Eloquent对象作为JSON返回时,如何动态隐藏某些列?例如,隐藏"密码"列:
$users = User::all();
return Response::json($users);
Run Code Online (Sandbox Code Playgroud)
我知道我可以在模型中设置受保护的属性($ hidden或$ visible),但是如何动态设置它们呢?我可能想在不同的上下文中隐藏或显示不同的列.
我有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与类型的关系.
这样做的正确方法是什么?
我正在尝试更新具有两个主键的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?
问题开始是因为我有一个表(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"我不能做.谢谢大家!
数据库表在列中存储Array或stdObject的模式是什么?
当我使用 - > string并插入一个数组变量时,它只在db列中存储单词"Array".
Laravel是否支持阵列?
如果不是,我应该采用什么方法?
我有三个表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)