gpt4 book ai didi

php - Laravel 资源创建带有 id 的模型

转载 作者:行者123 更新时间:2023-12-05 05:26:44 24 4
gpt4 key购买 nike

我有两个模型 'a''b' 以及 a->hasMany('b')b ->belongsTo('a')

所以当我创建一个 'b' 时,它应该属于一个 'a'

问题出在通常的 Route::resource('b', 'bController') 我只能创建这个 'b' 但不知道这属于哪个 'a'

我尝试将 bController 中的 create() 方法编辑为 create($id) 但是

Redirect::action('bController@create', $a->id)

仍然重定向到 /b/create?2 并给出错误

Missing argument 1 for bController::create()

当我使用 phoneuser 时,可能更容易理解。

每部手机属于一个用户。

如何创建手机?如何为 create() 提供用户参数并仍然使用 Route::resource

最佳答案

我认为你的方向是错误的,因为 UserPhone 是两个模型,因此 User 有很多 phone 所以这里的 Phone 模型是 User 类的子模型(相关),没有 就不可能存在 Phone User 所以你只需要通过 Controller 创建一个 User 并且 Phone 将在创建 User 时创建,例如:

Route::resource('users', 'UserController');

现在假设您有两个模型作为 UserPhone 并且 User 模型有 phones 方法建立关系 (phones = User->hasMany('Phone')) 而 Phone 模型有一个建立关系的 user 方法 ( user = Phone->belomgsTo('User')).

// User model
class User extends Eloquent {

//...
public function phones()
{
return $this->hasMany('Phone');
}
}

// Phone model
class Phone extends Eloquent {

//...
public function user()
{
return $this->belongsTo('user');
}
}

现在要创建一个 User,store 方法将像这样使用:

// UserController.php
class UserController extends BaseController {

// Other methods

// Creates a User
// URI: /users Method: POST
public function store()
{
// Create a User using User model
$user = User::create(...);
if($user) {
// Initialize/Create a Phone
$phone = new Phone(array(...));
if($phone) {
// Save the Phone and relate with User
$user->phones()->save($phone);
}
}
}

}

这是基本思想,最后一点是,Phone 不需要创建 Controller,因为它是 的一部分User 所以当你创建一个新的 User 然后在你创建一个 之后从 UserController 创建一个(或更多)Phone >User 或在更新 User 时更新 Phone

因此,如果你想加载一个 User 及其相关的 Phone 模型,那么你可以这样做:

$user = User::with('phones')->find(1);

因此,当您加载用户时,您可以加载与该用户相关的所有电话,以便在编辑用户时;您只需要加载一个具有相关 Phone 模型的 User 并将该模型传递给 View 。

要将新的 Phone 添加到现有的 User,您需要编辑 User 模型,以便加载 User 模型与 phones 并将该 User 模型传递给 View 进行编辑。当新的 Phone 被添加到用户时,你只需要将那个 Phone 附加到现有的 User ,就是这样。希望它有意义。

关于php - Laravel 资源创建带有 id 的模型,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/24230491/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com