我使用此方法在DB中创建新行:
$input = $request->all();
return Recipient::create([$input]);
Run Code Online (Sandbox Code Playgroud)
如何$input使用值添加其他字段?
我试过了:
$input["user_id"] = Auth::id();
Run Code Online (Sandbox Code Playgroud)
但是当我显示查询INSERT时,我看不到字段 user_id
模式用户表
ID|NAME
1 |John
2 |Doe
Run Code Online (Sandbox Code Playgroud)
架构财务表
ID|USER_ID|PROFIT |DATE
1 |1 |1000 |2016-12-22
2 |2 |-2000 |2016-12-22
3 |1 |2000 |2016-12-24
4 |2 |-2000 |2016-12-24
Run Code Online (Sandbox Code Playgroud)
用户模型
class User extends Model
{
public function Financial()
{
return $this->hasMany('App\Financial');
}
}
Run Code Online (Sandbox Code Playgroud)
财务模型
class Financial extends Model
{
public function financial()
{
return $this->belongsTo('App\User');
}
}
Run Code Online (Sandbox Code Playgroud)
我的控制器
class MyController extends Controller
{
public function index()
{
$user = User::get();
$financial = Financial::get();
return view('page.index',compact('user','financial'));
}
}
Run Code Online (Sandbox Code Playgroud)
我的剑 …
我具有以下关系:一个学生与一个人具有“一对一”的关系。一个人与Address具有“多对多”关系。
我要保留数据:首先创建人,在创建地址后,再创建学生。
但是,如果在任何这些表的持久化过程中发生任何错误,我都希望回滚转换。例如:如果我保存了“人”和“地址”,而“学生”失败了,我想回滚所有内容。
如何用口才来处理呢?
谢谢。
假设我有这些模块:
还有那些关系:
Coupon 有很多 Order.Order 有很多 Item.到现在为止还挺好.
现在我想总结属于优惠券订单的商品的价格.所以我想做这样的事情:
Coupon::orders->items->sum('price');
Run Code Online (Sandbox Code Playgroud)
好吧,它不起作用,因为orders()方法返回一个Collection关系:
/**
* @return \Illuminate\Database\Eloquent\Relations\HasMany
*/
public function orders()
{
return $this->hasMany(Order::class);
}
Run Code Online (Sandbox Code Playgroud)
我收到的错误是item财产受到保护.我发现它与我的Item模块无关,只是因为Collection有protected $items = [];.
所以,当我清理了一些事实,我的问题/问题是,我如何求和items->price的orders属于Coupon?
当然,我可以像这样做一个foreach循环来实现我的目标:
$price = 0;
foreach (Coupon:orders as $order)
$price += $order->items->sum('price');
return $price;
Run Code Online (Sandbox Code Playgroud)
但我正在寻找一个更清洁的解决方案.任何人?
目前我正在发送给我的api:
return Forum::with('topics')
->paginate($pagination);
Run Code Online (Sandbox Code Playgroud)
所以一个论坛有很多主题.我如何计算所有主题并通过此json响应将其发回?
伙计们,我正在尝试从返回给我的数据中获取最后一个元素,但问题是它抛出了一个错误
Call to undefined method Illuminate\Database\Query\Builder::last()
Run Code Online (Sandbox Code Playgroud)
这是我的代码
$last_saved_snapshot = \EnginePerformanceTestSnapshot::where('engine_performance_test_id', $id)->last();
Run Code Online (Sandbox Code Playgroud)
请告诉我我做错了什么。谢谢
PS我正在使用Laravel 5.0
我想在我的数据库中存储1个带有4位小数的数字.
如果我使用浮点数我只能添加2位小数
$table->float('sell');
Run Code Online (Sandbox Code Playgroud)
如果我尝试使用小数我会得到一个错误
$table->decimal('sell', 1, 4);
Run Code Online (Sandbox Code Playgroud)
第一个数字必须大于或等于第二个数字.
SQLSTATE[42000]: Syntax error or access violation: 1427 For float(M,D), double(M,D) or decimal(M,D), M must be >= D (column '
Run Code Online (Sandbox Code Playgroud)
卖').(SQL:create table customers(idint unsigned not null auto_increment primary key,selldecimal(1,4)not null,
created_attimestamp null,updated_attimestamp null)default character set utf8 collate utf8_unicode_ci)
有帮助吗?
谢谢
我有一个雄辩的查询,其中orderBy之一是两列的差异.
$mymodel = Level::where([['ColA', 5], ['ColB', 10], ['ColC', 7]])
->orderBy('ColA', 'Desc')
->orderBy('ColA' - 'ColB', 'Desc')
->orderBy('ColC', 'Desc')
->orderBy('ColD', 'Asc')
->pluck('userId')->toArray();
Run Code Online (Sandbox Code Playgroud)
使用sqlite的localhost上完全相同的代码可以正常运行而不会出错.但在使用MySQL进行生产时出现以下错误
SQLSTATE[42S22]: Column not found: 1054 Unknown column '0' in 'order clause' (SQL: select `userId` from `levels` where (`ColA` = 5 and `ColB` = 10 and `ColC` = 7) order by `ColA` desc, `0` desc, `ColC` desc, `ColD` asc)
Run Code Online (Sandbox Code Playgroud) 是否想知道其他人如何实现以下目标?
表格:
teams
teams_users (pivot many teams, many users)
users
Run Code Online (Sandbox Code Playgroud)
我正在努力实现的目标
$teams->user->where('user_id', $id)->get();
Run Code Online (Sandbox Code Playgroud)
但是我必须运行一个循环,并在团队模型上创建另一个方法来摘录(id,name)
// foreach ($teams as $team) {
// # code...
// dump($team->getUserIdsAttribute());
// }
Run Code Online (Sandbox Code Playgroud)
你知道更好的方法吗?
我有以下雄辩的代码:
$gifts = FriendGift::find($collectedGifts); // An array of IDS
Run Code Online (Sandbox Code Playgroud)
我想把所有人都设为collected = 1.
我试过这个:
$gifts->update(['collected' => 1]);
Run Code Online (Sandbox Code Playgroud)
但是我收到以下错误:
Method update does not exist
Run Code Online (Sandbox Code Playgroud)
怎么了?