数据库中有三个表
我正在从用户注册表的多个下拉字段中的位置表中获取记录。填写表单时,用户必须从下拉列表中选择值,然后提交。
提交表单后,我想将数据插入用户表。同时,我还想把用户表中的id插入location_useruser_id列中,把用户注册表下拉列表中的位置选择值插入location_user表location_id列中。
我知道如何使用雄辩的工作,但我在问题中提到,我想知道如何使用laravel查询生成器处理这项任务。
在这里,这将使用查询生成器创建3个单独的查询,以获得所需的内容。
$user_id = DB::table('users')->insertGetId(
['something' => 'something']
);
$location_id = DB::table('locations')->insertGetId(
['something' => 'something']
);
DB::table('location_user')->insert(
['user_id' => $user_id, 'location_id' => $location_id]
);
但是Laravel的ORM处理了这个问题,所以如果你正确地映射了你的模型,你可以做这样的事情:
$location = $user->locations()->create([
'something' => 'something.',
]);
请看这里:https://laravel.com/docs/5.4/eloquent-relationships
您必须使用此代码:
$user = new user;
$user->title = $request->title; // your value
$user->username = $request->username // your value
$user->save();
$user->locations()->attach([1,2]); // or ->attach($location_id);
/// or $user->locations()->sync([1,2])
这是一个使用ORM雄辩并在模型中定义关系的项目示例。
你可以注意我的例子:模型产品
class Product extends Model
{
public function Categories()
{
return $this->belongsToMany('App\Category','product_category','category_id');
}
}
模型类别
class Category extends Model
{
public function Products()
{
return $this->belongsToMany('App\Product','product_category','product_id');
}
}
当您希望在数据库中插入时,必须在控制器中写入此代码
$validated = $request->validated();
$user = Auth::user();
$product = new Product;
$product->title = $request->title;
$product->off_price = $request->off_price;
$product->price = $request->price;
$product->available = $request->available;
$product->user_id = $user->id;
$product->save();
$product->Categories()->attach($request->categories/* this is an array*/);
有什么理由在这里使用透视表吗?如果要将位置绑定到用户,那么只需向用户表添加一个location_id
字段,并具有一对多关系(位置,用户)。我看不出这里有任何理由使用透视表,除非您希望用户有多个位置。
不管怎样,如果你听从我的建议,事情会变得容易些。但是对于当前的表结构,您需要在各个模型中设置关系。然后在表单提交上,创建用户并将位置附加到用户。
用户模型
public function locations()
{
return $this->belongsToMany('App\Location');
}
位置模型
public function users()
{
return $this->belongsToMany('App\User');
}
控制器
$user = User::create($request->all());
$user->locations()->attach($request->location_id);
我想创建用户角色系统,为此我创建了三个表:用户、角色 它有一个belongToMany关系,透视表存储了用户id
我有下面的查询,我正试图将其转换为Laravel的查询生成器,以便利用自动转义等功能。 实际上,查询所说的是“获取所有主题的名称,如果它们有匹配的report_comment(通过中间的表),将其与主题一起返回”(对于给定的条件,主题有一个或零report_comments)...如果我直接在MySQL中运行查询并返回我期望的结果,查询就可以工作。目前是硬编码的,但最终将成为占位符,以便可以传入任
我有一个用户表和一个帐户表。 此帐户表定义用户可以拥有的帐户。 例如 账户: 用户: 我现在有另一个表:users\u accounts 我正在为新用户创建一个界面。在这个页面上,我有基本的细节,但也有一个复选框列表(从accounts表创建)。复选框表示用户需要为其设置的帐户。 我要做的是创建帐户时: 我还想将用户ID和他们需要设置的帐户添加到users_accounts表中。单个用户可能需要多
在我的Laravel应用程序中,我有三个数据库表,分别称为users、projects和roles。它们之间存在m:n关系,所以我也有一个称为PROJECT_USER_ROLE的透视表。透视表包含user_id、project_id和role_id列。请参见MySQL工作台的屏幕截图。 我的用户、项目和角色模型得到了如下定义的归属关系: 现在我可以很容易地获得通过身份验证的用户的项目: 对此的回应
假设我们正在使用Laravel的查询生成器: 我正在寻找一个等效的SQL: 当我必须键入大量select和WHERE(或者通常在select的列alias中包含别名,并且它在结果数组中使用)时,这将特别有用。如果没有任何表别名,我需要输入更多的内容,所有内容的可读性都会降低。在laravel文档中找不到答案,有什么想法吗?
我有2张桌子。一个有用户,一个有位置。我创建了一个名为user_locations的数据透视表。一个用户可以有一个或多个位置。一个位置可以属于一个或多个用户。所以我在这些桌子上有多对多的关系。我已经从laravel上读到过附加方法,但我不太确定如何使用它。 在“我的用户和位置”表中,我有一个id,该id在“用户id”和“位置id”下进入我的透视表。 目前我遇到了两个问题。In Location::