私の小さなアプリケーションには2つのモデルがあり、PostモデルとAutovistoriaという2つのモデルがあります。 ポストモデルはうまく機能しています。その種類のブログです。 しかし、私はAutovistoriaControllerとViewを実装していますが、Autovistoriaの代わりにPostモデルが呼び出されているようです。 だから、autovistoriaのための私のルートは以下のとおりです。Laravel QueryException保存中モデル:間違ったモデルを保存しようとしています
//form for new Autovistoria
Route::get('autovistoria/nova','[email protected]');
// Create new Autovistoria
Route::post('autovistoria/nova','[email protected]_vistoria');
コントローラのメソッド:
<?php
namespace monografia\Http\Controllers;
use Illuminate\Http\Request;
use monografia\Autovistoria;
use monografia\User;
use Redirect;
use monografia\Http\Requests\AutovistoriaFormRequest;
use monografia\Http\Requests;
use Auth;
class AutovistoriaController extends Controller
{
public function criar(Request $request)
{
// Verifica se usuario pode executar vistoria (Usuários)
if($request->user()->pode_vistoriar())
{
return view('autovistoria.nova');
}
else
{
return redirect('autovistoria/listar')->withErrors('Você não tem autorização para criar uma vistoria.');
}
}
public function salvar_vistoria(AutovistoriaFormRequest $request)
{
$autovistoria = new Autovistoria();
$autovistoria->endereco = $request->get('endereco');
$autovistoria->bairro = $request->get('bairro');
$autovistoria->cep = $request->get('cep');
$autovistoria->pavimentos = $request->get('pavimentos');
$autovistoria->autor_id = $request->user()->id;
$message = 'Vistoria Criada. Você pode iniciá-la quando desejar';
$autovistoria->save();
return redirect('autovistoria.nova')->withMessage($message);
}
}
フォーム要求:
class AutovistoriaFormRequest extends Request {
/**
* Determina se usuário pode fazer a postagem.
*
* @return bool
*/
public function authorize()
{
if($this->user()->pode_vistoriar())
{
return true;
}
return false;
}
/**
* Get the validation rules that apply to the request.
*
* @return array
*/
public function rules()
{
return [
'endereco' => 'required|unique:posts|max:255',
'bairro' => 'required|unique:posts|max:255',
'cep' => 'required',
];
} }
モデル:
class Autovistoria extends Model
{
protected $table = 'autovistoria';
// Proteje a tabela contra mudanças
protected $guarded = [];
// Retorna a instancia do usuário autor da vistoria
public function autor()
{
return $this->belongsTo('monografia\User','autor_id');
}
}
ビューへのパス保存が正しく、私は新しいモデルを作成しようとしても、それが動作しますが、私はフォームを介して送信すると、自動投稿の代わりに投稿モデルのデータベースに保存しようとします。
SQLエラー: Connection.php 673行:SQLSTATE [42S22]:列が見つかりません:1054 'where句'内の 'endereco'の列が不明です(SQL:endereco = Rua Testeの投稿から集計として選択)
助けて?
編集:
マイスキーマ:
Schema::create('autovistoria', function(Blueprint $table)
{
$table->increments('id');
$table->integer('autor_id') -> unsigned() -> default(0);
$table->foreign('autor_id')
->references('id')->on('users')
->onDelete('cascade');
$table->string('endereco')->unique();
$table->integer('pavimentos');
$table->text('conteudo');
$table->text('categoria');
$table->boolean('vistoriado');
$table->timestamps();
});
<form action="nova" method="post" name="nova-vistoria">
<input type="hidden" name="_token" value="{{ csrf_token() }}">
<div class="form-group">
<label for="endereco">Digite o endereço da Edificação:</label>
<input required="required" value="{{ old('endereco') }}" placeholder="Rua Exemplo, numero 2" type="text" name = "endereco" class="form-control" />
</div>
<div class="form-group">
<label for="endereco">Bairro onde está situada:</label>
<input required="required" value="{{ old('bairro') }}" placeholder="Ex: Barra da Tijuca, Botafoto, Copacabana..." type="text" name = "bairro" class="form-control" />
</div>
<div class="form-group">
<label for="endereco">CEP da edificação (Apenas números):</label>
<input required="required" value="{{ old('cep') }}" placeholder="21345123" type="text" name = "cep" class="form-control" />
</div>
<div class="form-group">
<label for="pavimentos">Total de pavimentos da edificação:</label>
<select name = "pavimentos" class="form-control">
@for($i = 1; $i < 21; $i++)
<option value="{{$i}}">{{$i}}</option>"
@endfor
</select>
</div>
<div class="form-group"><input type="submit" name='salvar' class="btn btn-success" value = "Salvar"/></div>
</form>
移行ファイルのクラス名を変更した後、うまく働いたあなたのDBスキーマを表示... – WahidSherief
だから、それはダミーデータで仕事をしました。 –